如何使用PackageReference打包UWP库?

时间:2018-02-15 17:56:37

标签: .net visual-studio uwp msbuild nuget

我正在开发一个UWP库(this one),我刚刚将目标版本升级到16299 SDK。 这也导致NuGet引用从project.json文件迁移到。PackageReference的.csproj文件,理论上听起来非常好。

但是,在尝试发布NuGet包的beta版本(与nuget pack一样生成)之后,我注意到库依赖项未正确添加,我开始得到异常,说明了给定的类型失踪(因为缺少依赖性)。

我发现this issue确实确认nuget pack尚不支持PackageReference依赖关系。

我已尝试按照this guide使用MSBuild并尝试使用:

>msbuild /t:pack UICompositionAnimations.csproj /p:NuspecFile=UICompositionAnimations.nuspec /p:Configuration=Release

但我最终得到quite a few errors

  

使用PackageReference对NuGet UWP库进行打包的正确方法是什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  

如何使用PackageReference打包UWP库?

正如您所知,nuget.exe pack目前不支持基于程序包参考的项目,而“Allow project reference DLLs to be added to the parent nupkg for pack target like IncludeReferencedProjects in nuget.exe”功能正在进行中。

作为一种变通方法,您可以手动将依赖项包含在.nupsec文件中,以下是我的.nuspec

<?xml version="1.0"?>
<package >
  <metadata>
    <id>ClassLibrary1</id>
    <version>1.0.0</version>
    <authors>Tester</authors>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package description</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2018</copyright>
    <tags>Tag1 Tag2</tags>
    <dependencies>
      <dependency id="Newtonsoft.Json" version="10.0.3" />
    </dependencies>
  </metadata>

  <files>
    <file src="bin\Debug\ClassLibrary1.dll" target="lib\uap10.0"/>
  </files>
</package>

打包此.nuspec文件后,将生成包含依赖关系Newtonsoft.Json的包:

enter image description here

有关详细信息,请参阅Create UWP packages

希望这有帮助。