Windows runtime Nuget从本地文件解析依赖项

Windows runtime Nuget从本地文件解析依赖项,windows-runtime,nuget,nuget-package,portable-class-library,Windows Runtime,Nuget,Nuget Package,Portable Class Library,我有一个包含四个项目的解决方案,三个PCL和一个WinRT。我已经为每一个单独创建了一个nuget包,但是,我想为所有这些包创建一个单独的包,但是它们之间有外部依赖关系,也有依赖关系,我不知道如何解决它们。我发现外部依赖性类似于: <?xml version="1.0"?> (...) <dependencies> <dependency id="SampleDependency" version="1.0" /> </dep

我有一个包含四个项目的解决方案,三个PCL和一个WinRT。我已经为每一个单独创建了一个nuget包,但是,我想为所有这些包创建一个单独的包,但是它们之间有外部依赖关系,也有依赖关系,我不知道如何解决它们。我发现外部依赖性类似于:

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

(...)
(...)
但是如何指定本地依赖关系?

您可以在这里看到结构图:

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

所以这个想法其实很简单,在这个例子中,我想把所有的东西都放在
.dll
中,所以你需要添加一个lib部分,然后是平台特定的文件夹(在我的例子中是wpa81),然后是你需要的每个
.dll
文件。

在WindowsRuntinme项目中,你需要两个文件,一个
WindowsRuntinmeProject.pri
WindowsRuntimeProject.winmd

对于带有视图的PCL文件,需要额外的文件和逻辑,因此您需要在平台文件夹中添加
ClassLibraryWithViews.dll
,然后您需要创建一个与PCL项目同名的文件夹,然后将
ClassLibraryWithViews.xr.xml
(其中包含一些xaml标记和信息)放入其中,然后在项目中创建视图的文件夹结构(如果碰巧有)。在我的示例中,主题文件夹中有一个
Generic.xaml
,视图文件夹中有一个
PageView.xaml
,所以我在这里复制了这个结构。您可以注意到这些文件不是
.xaml
,它们实际上是
.xbf
,这是您构建项目后得到的,因此这些是您需要使用的文件。我还应该指出,我的
Generic.xbf
是一个ResourceDictionary(无代码隐藏),我的
PageView.xbf
实际上是一个页面,因此它有代码隐藏,但当您构建包时,这是透明的,这很好。

然后将其安装到项目中后,您将在平台文件夹中看到所有
.dll
,并且您还将看到WinRT项目,就好像它是
.dll

需要指出的是,这里的每个文件都是通过在解决方案中构建项目生成的,因此不需要创建任何文件。

还有一点需要提及,您可以看到我将MvvmLight
.dll直接添加到了我的项目中,尽管如果需要,您可以将它们作为依赖项添加到nuget软件包元数据中,以便在安装Your's nuget软件包时获取并安装它们。可以在这里看到该部分:


您应该在问题中添加winrt标记,以便其他人可以轻松找到它