团队城市自定义NuGet包还原不发生

时间:2014-08-12 19:48:31

标签: msbuild teamcity nuget nuget-server

我目前正在将我们的构建从Cruise Control切换到Team City,并且遇到了一个问题,试图为我的几个项目中使用的组件恢复我的自定义NuGet包。该组件称为Connector Base。我在Team City中为Connector Base设置了一个构建,它成功创建了一个NuGet包并将其保存为工件,可以从我设置的Team City NuGet服务器访问。我已经进入了需要访问此依赖项的项目解决方案,我已经使用我在Team City设置中提供的URL从NuGet包管理器安装了Connector Base。一切都很顺利,它的构建和功能都符合预期。然后我将其提交给SVN并尝试使用Team City中的NuGet Installer构建步骤在我的解决方案文件上执行NuGet包还原。结果是它不构建或恢复任何包,因此以后无法进行构建,因为它无法找到Connector Base依赖项。我已经浏览了整个互联网,我能找到最接近答案的答案就在这里: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.

1 个答案:

答案 0 :(得分:1)

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

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