2

我目前正在将我们的构建从 Cruise Control 切换到 Team City,并且在尝试为我的多个项目中使用的组件恢复我的自定义 NuGet 包时遇到问题。该组件称为连接器基础。我在 Team City 中为 Connector Base 设置了一个构建,它成功创建了一个 NuGet 包并将其保存为工件,以便从我设置的 Team City NuGet 服务器进行访问。我已经进入了需要访问此依赖项的项目的解决方案,并使用我在 Team City 设置中提供的 URL 从 NuGet 包管理器安装了连接器基础。一切都很好,它按预期构建和运行。然后我将其提交给 SVN,并尝试使用 Team City 中的 NuGet 安装程序构建步骤对我的解决方案文件执行 NuGet 包还原。结果是它不构建或恢复任何包,因此稍后构建失败,因为它找不到连接器基础依赖项。我浏览了整个互联网,我能找到的最接近答案的地方是:http://nuget.codeplex.com/discussions/288024。但这是指包创建而不是恢复。

我包括我的日志以供参考:

Step 1/6: NuGet Package Restore (NuGet Installer)
[12:09:00]scan: Searching for nuget.config files
[12:09:00]Found packages folder: C:\TeamCity\buildAgent\work\e0174164dde3f938\Ingeo\Connector_County\NewConnectors\Acris\packages
[12:09:00]Failed to find repositories.config at C:\TeamCity\buildAgent\work\e0174164dde3f938\Ingeo\Connector_County\NewConnectors\Acris\packages\repositories.config
[12:09:00]Scanning projects in solution file: C:\TeamCity\buildAgent\work\e0174164dde3f938\Ingeo\Connector_County\NewConnectors\Acris\Acris.sln
[12:09:00]Found project C:\TeamCity\buildAgent\work\e0174164dde3f938\Ingeo\Connector_County\NewConnectors\Acris\Acris\Acris.csproj
[12:09:00]Found project C:\TeamCity\buildAgent\work\e0174164dde3f938\Ingeo\IngeoCommon\IngeoLogger\IngeoLogger\IngeoLogger.csproj
[12:09:00]Found project C:\TeamCity\buildAgent\work\e0174164dde3f938\Ingeo\Connector_County\Common_Components\DynamicConnectorTester\DynamicConnectorTester.csproj
[12:09:00]Found project C:\TeamCity\buildAgent\work\e0174164dde3f938\Ingeo\Connector_County\Common_Components\Interface\Interface.csproj
[12:09:00]Found project C:\TeamCity\buildAgent\work\e0174164dde3f938\Ingeo\Connector_County\NewConnectors\Acris\.nuget
[12:09:00]restore: Restoring NuGet packages for Ingeo\Connector_County\NewConnectors\Acris\Acris.sln
[12:09:00]NuGet command: C:\TeamCity\buildAgent\plugins\nuget-agent\bin\JetBrains.TeamCity.NuGetRunner.exe C:\TeamCity\buildAgent\tools\NuGet.CommandLine.DEFAULT.nupkg\tools\NuGet.exe restore C:\TeamCity\buildAgent\work\e0174164dde3f938\Ingeo\Connector_County\NewConnectors\Acris\Acris.sln -Source https://nuget.org/api/v2/ -Source http://localhost/guestAuth/app/nuget/v1/FeedService.svc/
[12:09:00]Starting: C:\TeamCity\buildAgent\temp\agentTmp\custom_script1470188724716953938.cmd
[12:09:00]in directory: C:\TeamCity\buildAgent\work\e0174164dde3f938\Ingeo\Connector_County\NewConnectors\Acris
[12:09:01]JetBrains TeamCity NuGet Runner 8.0.30168.9
[12:09:01]Registered additional extensions from paths: C:\TeamCity\buildAgent\plugins\nuget-agent\bin\plugins-2.8
[12:09:01]Starting NuGet.exe 2.8.50506.491 from C:\TeamCity\buildAgent\tools\NuGet.CommandLine.DEFAULT.nupkg\tools\NuGet.exe
[12:09:01]Process exited with code 0

执行包还原步骤后,我尝试构建解决方案,但失败并出现以下错误:

“此项目引用此计算机上缺少的 NuGet 包。启用 NuGet 包还原以下载它们”

一方面,我不想每次进行构建时都必须在构建服务器上物理启用包还原,当简单的包还原应该可以解决问题时,检查我的 .nuget 文件夹也不是非常实际。有人对这个有经验么?我读到的一件事似乎表明这是因为我的 Connector Base NuGet 包还依赖于其他非自定义 NuGet 包。任何帮助是极大的赞赏。

更新

这是即使在我能够恢复我的包之后我得到的错误:

[Error] C:\TeamCity\buildAgent\work\e0174164dde3f938\Ingeo\Connector_County\NewConnectors\Acris\Acris\Acris.csproj(327, 5): This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is C:\TeamCity\buildAgent\work\e0174164dde3f938\Ingeo\Connector_County\NewConnectors\Acris\\.nuget\NuGet.targets.
4

1 回答 1

1

编辑构建配置并添加一个名为 EnableNuGetPackageRestore 的环境变量类型的新参数,其值为 true。无论哪个代理运行构建,这将允许包恢复。

在 TeamCity 上启用包还原后,在本地加载您的解决方案并右键单击解决方案资源管理器中的解决方案并选择“启用 NuGet 包还原”。这将更改解决方案中的每个项目以导入 NuGet.targets MsBuild 任务,并且您需要将此更改提交到源代码管理。

于 2014-08-13T08:44:10.013 回答