我有四个项目的解决方案,三个PCL和一个WinRT。我已经设法为每个人创建一个nuget包,但是,我想为所有这些创建一个包,但是它们之间存在外部依赖关系以及它们之间的依赖关系,我不知道如何解决它们。我发现外部依赖的东西是这样的:
<?xml version="1.0"?>
(...)
<dependencies>
<dependency id="SampleDependency" version="1.0" />
</dependencies>
(...)
</package>
但是如何指定本地依赖关系?
您可以在此处查看结构图:http://i.imgur.com/AlotgHy.png
答案 0 :(得分:1)
我找到了一种使用Visual Studio扩展项目的方法,但是因为问题是Nuget我将发布如何在Nuget中解决这个问题。
因为我在我的一个PCL中有视图,所以事情变得有点复杂,但是当我找到我需要的文件和文件结构时很容易。这是结构:
所以这个想法实际上非常简单,在这种情况下我想把所有内容放在.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包。这部分可以在这里看到: