Nuget Packager任务 - 未添加依赖项

时间:2016-05-05 13:35:18

标签: visual-studio nuget azure-devops nuget-package

我使用Visual Studio Team Services自动创建nuget包。这个包依赖于另一个nuget包(Newtonsoft.Json v8.0.3)。我已将Nuget Packager任务配置为构建的一部分:

Nuget Packager task configuration

但生成的包不包含对nuget包的引用:

Generated nuget package without dependencies

在我的本地计算机上运行以下脚本以生成程序包:

nuget pack myproject.csproj -Symbols -IncludeReferencedProjects -Properties Configuration=Release -OutputDirectory bin/Release

我可以看到依赖项被添加到生成的包中:

Generated nuget package with dependencies

我在这里缺少什么?为什么没有将依赖项添加到构建服务器上生成的包?

2 个答案:

答案 0 :(得分:0)

“IncludeReferencedProjects”用于将引用的项目添加到nuget包,而不是引用的nuget包。

  

将引用的项目包含为依赖项或作为其中的一部分   包。如果引用的项目具有相应的nuspec文件   与项目同名,然后引用的项目是   作为依赖添加。否则,引用的项目将添加为   包的一部分。在NuGet.org了解更多信息。

为项目创建nuget包时,该包引用了另一个nuget包。如果packages文件夹中存在nupkg文件,则会自动添加nuget包依赖项。对于您的问题,您可以在构建定义中添加“NuGet Installer”任务,以恢复解决方案的nuget包文件。然后,当您为项目创建nuget包时,引用的nuget包将作为依赖项添加。

答案 1 :(得分:0)

我找到了解决问题的方法,尽管我不明白为什么没有正确创建包。

所以基本上我有两个版本:

  • a" generic"构建将编译整个解决方案并运行单元测试等(自动,在提交时触发)
  • 用于生成nuget包的构建(手动)

此问题出现在第2版。我试图了解在我的本地机器上手动创建包和在构建服务器上创建包之间的区别是什么,我意识到在构建服务器上我没有获得解决方案的源代码,仅用于项目文件夹和.nuget文件夹。鉴于我在解决方案中有超过40个项目,获取第二个构建的完整源代码是没有意义的,对吧?但由于某些原因,这还不足以正确生成nuget包。

所以,我的问题的解决方案是获取以下文件/文件夹的源代码:

  • 项目文件夹
  • .nuget文件夹(恢复/安装缺少的软件包时需要)
  • 解决方案文件(mysolution.sln