Nuget从本地文件中解析依赖项

时间:2014-11-05 16:03:26

标签: windows-runtime nuget nuget-package portable-class-library

我有四个项目的解决方案,三个PCL和一个WinRT。我已经设法为每个人创建一个nuget包,但是,我想为所有这些创建一个包,但是它们之间存在外部依赖关系以及它们之间的依赖关系,我不知道如何解决它们。我发现外部依赖的东西是这样的:

<?xml version="1.0"?>
(...)
    <dependencies>
      <dependency id="SampleDependency" version="1.0" />
    </dependencies>
(...)
</package>

但是如何指定本地依赖关系?
您可以在此处查看结构图:http://i.imgur.com/AlotgHy.png

1 个答案:

答案 0 :(得分:1)

我找到了一种使用Visual Studio扩展项目的方法,但是因为问题是Nuget我将发布如何在Nuget中解决这个问题。
因为我在我的一个PCL中有视图,所以事情变得有点复杂,但是当我找到我需要的文件和文件结构时很容易。这是结构:

Nuget Package structure

所以这个想法实际上非常简单,在这种情况下我想把所有内容放在.dlls中,所以你需要添加一个 lib 部分,然后添加平台特定的文件夹(在我的案例 wpa81 ),然后是您需要的每个.dll文件。

对于WindowsRuntinme项目,您需要两个文件,WindowsRuntinmeProject.pri和{ {1}}。
对于带有视图的PCL文件,需要额外的文件和逻辑,因此您需要在平台文件夹中添加WindowsRuntimeProject.winmd,然后需要创建一个与PCL项目名称相同的文件夹,内部放置ClassLibraryWithViews.dll(有一些xaml标签和信息),然后在项目中创建视图的文件夹结构< / strong>,如果你碰巧有一个。在我的示例中,我在一个Themes文件夹中有一个ClassLibraryWithViews.xr.xml,在我的View文件夹中有一个Generic.xaml,所以我在这里复制了这个结构。您可以注意到文件不是PageView.xaml,它们实际上是.xaml,这是您在构建项目后获得的内容,因此您需要使用这些文件。我还应该指出我的.xbf是一个ResourceDictionary(没有代码隐藏)而我的Generic.xbf实际上是一个Page,所以它有代码隐藏,但是当你构建包时,那是透明的,这很好。

然后,在您的项目中安装它之后,您将在平台文件夹中看到每个PageView.xbf,并且您还会看到WinRT项目,就好像它是.dll。<登记/> 指出这里的每个文件都是通过在解决方案中构建项目来生成的,这是很好的,因此无需创建任何文件。

还有一点要提一下,你可以看到我将MvvmLight .dll直接添加到我的项目中,不过如果你想要你可以在nuget包元数据中添加它们作为依赖项,那么当你&#39时它们将被提取和安装。 ;重新安装你的nuget包。这部分可以在这里看到:

Nuget metada dependencies