【问题标题】:Nuget Packager task - dependency is not addedNuget Packager 任务 - 未添加依赖项
【发布时间】:2016-08-31 07:53:31
【问题描述】:

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

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

在我的本地机器上运行以下脚本来生成包:

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

可以看到生成的包中添加了依赖:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗨 Eddie,是的,我知道标志的含义,我将它包含在我的问题中只是为了展示我如何创建 nuget 包。 “Nuget Installer”任务已经存在,但不幸的是它并没有解决问题,即没有添加 Newtonsoft.Json 依赖项。
    • @RuiJarimba 我在我身边使用托管构建代理进行了尝试,但没有发现任何问题。顺便问一下,您使用哪个任务来创建 nuget 包?您问题中的用户界面与我的不同。
    • @RuiJarimba 你能分享“Nuget Installer”任务和“Nuget Packager”任务的日志吗?
    • 嗨,Eddie,我找到了解决问题的方法,我会尽快发布。我有一个“NuGet 安装程序”任务来为项目安装缺少的包(安装类型 = 安装),还有一个“NuGet Packager”任务来为项目创建包。
    • 嗨,埃迪,检查我的答案。知道为什么需要解决方案文件来生成具有正确依赖项的包吗?
    【解决方案2】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 2011-11-12
      • 1970-01-01
      • 2015-10-12
      • 2018-11-23
      • 2021-03-11
      相关资源
      最近更新 更多