【问题标题】:How to trigger NuGet v2.x Package Restore from CruiseControl.Net如何从 CruiseControl.Net 触发 NuGet v2.x 包还原
【发布时间】:2024-01-16 05:12:02
【问题描述】:

尝试使用 CruiseControl.Net 构建 VS2010 解决方案时是否可以触发 NuGet v2.x 包还原?

我们最近设置了 CCNET,只是试图触发我们主要解决方案的测试构建。主解决方案中的许多项目都启用了 NuGet 包还原。包文件夹未提交给我们的 VCS。由于必须同意 Visual Studio 中的包还原这一新“功能”,MSBuild 在遇到 nuget.targets 文件中的还原包目标时会失败。

如果可以不对使用 NuGet 或编写自定义构建脚本的每个项目进行重大更改,那么完成包还原的最佳方法是什么?

【问题讨论】:

    标签: visual-studio-2010 msbuild cruisecontrol.net nuget


    【解决方案1】:

    来自http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages 要为未安装 Visual Studio 的构建服务器启用包还原,您还可以将环境变量 EnableNuGetPackageRestore 设置为“true”。

    【讨论】:

    • 是的,当然现在,因为我们使用我们自己的内部 NuGet 服务器,我需要弄清楚如何设置它,以便它知道用于包还原的内部服务器。我希望 NuGet 的人们将关于 EnableNuGetPackageRestore 的一句话更加突出。
    • 出于某种原因,这本身对我来说不适用于 Nuget 3.3。我还必须将 nuget.exe 下载到 CCNet 机器,并为每个带有软件包的解决方案添加以下内容:<exec executable="C:\Program Files (x86)\NuGet\nuget.exe"> <buildArgs>restore C:\SomeSolution.sln</buildArgs> </exec> 在 msbuild 任务之前。
    • 我使用了您的解决方案@poke,但由于某种原因,这将失败而不会生成日志。
    • @Anders 在给定路径上是否有 Nuget 命令行实用程序 (docs.nuget.org/consume/installing-nuget)?
    • @poke 是的,但是如果我更改 nuget.exe 命令行的名称,故意拼错,我会得到相同的结果:“日志不包含 MSBuild 的任何 XML 输出。”跨度>