直接在项目中引用Visual Studio扩展SDK时,.csproj文件中包含以下代码段:
Microsoft Player Framework
NuGet提供的功能可以在安装NuGet包时执行等效操作 . 您必须做的第一件事是在项目中创建一个.targets文件(例如MyLibraryUsingExtensionSdk.targets),该文件包含要添加到安装库的项目中的相关XML . 您需要从库的.csproj文件中复制相关的 元素,并且还要包含任何父元素,从而创建可以合并的完整XML文档 .
Microsoft Player Framework
将此文件的构建操作设置为None,以避免构建过程不必要地触及它 .
通过将此.targets文件包含在NuGet包结构中的适当位置,它将在运行时自动合并到使用您的库的项目中 . 您想要实现以下包结构:
+---build
| \---uap10.0
| MyLibraryUsingExtensionSdk.targets
|
\---lib
\---uap10.0
| MyLibraryUsingExtensionSdk.dll
| MyLibraryUsingExtensionSdk.pdb
| MyLibraryUsingExtensionSdk.pri
| MyLibraryUsingExtensionSdk.XML
|
\---MyLibraryUsingExtensionSdk
ExampleControl.xaml
MyLibraryUsingExtensionSdk.xr.xml
您可以使用以下.nuspec模板创建此类包:
Example.MyLibraryUsingExtensionSdk
1.0.0
Firstname Lastname
Example of a simple UWP library that depends on an extension SDK.
请注意,安装此类NuGet包后,Visual Studio将需要重新加载解决方案才能完全识别扩展SDK . 构建将立即工作而不会出现问题,但IntelliSense在重新加载之前不会选择新的扩展SDK .
不幸的是,这种方法确实需要您对扩展SDK的版本号进行硬编码,这可能会有问题 . 在撰写本文时,我知道无法指定版本范围或版本无关的引用 .
在创建NuGet包之前,请记住使用Release配置构建解决方案 .
样本库和相关的打包文件是available on GitHub . 与此答案对应的解决方案是UwpLibraryDependingOnExtensionSdks .