Пользовательское восстановление пакета Team City NuGet не происходит
В настоящее время я переключаю наши сборки с Cruise Control на Team City и сталкиваюсь с проблемой, пытаясь восстановить мой собственный пакет NuGet для компонента, который используется в нескольких моих проектах. Компонент называется Connector Base. У меня есть сборка, настроенная в Team City для Connector Base, которая успешно создает пакет NuGet и сохраняет его в качестве артефакта для доступа с моего сервера Team City NuGet, который я настроил. Я приступил к решению моего проекта, которому нужен доступ к этой зависимости, и я установил Connector Base из диспетчера пакетов NuGet, используя URL-адрес, указанный в настройках Team City. Все хорошо, и это строит и функционирует как ожидалось. Затем я фиксирую его в SVN и пытаюсь выполнить восстановление пакета NuGet в моем файле решения, используя шаг сборки установщика NuGet в Team City. В результате он не собирает и не восстанавливает какие-либо пакеты и поэтому не может выполнить сборку позже, так как не может найти зависимость 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 ответ
Отредактируйте конфигурацию сборки и добавьте новый параметр переменной среды типа с именем EnableNuGetPackageRestore со значением true. Это позволит восстановить пакеты независимо от того, какой агент запускает сборку.
После включения восстановления пакетов в TeamCity загрузите решение локально, щелкните правой кнопкой мыши решение в обозревателе решений и выберите "Включить восстановление пакета NuGet". Это изменит каждый проект в решении для импорта задачи NuGet.targets MsBuild, и вам нужно будет зафиксировать это изменение в системе контроля версий.