Восстановление пакета NuGet не может найти пакет, не имеет источника
У меня есть пакет в канале TeamCity NuGet, созданный TeamCity, но зависимый проект TC не может увидеть его во время восстановления пакета.
[14:05:02] [Exec] E: \ TeamCity-BuildAgent \ work \ 62023563850993a7 \ Web.nuget \ nuget.targets (88, 9): Невозможно найти версию '1.0.17.0' пакета 'MarkLogicManager40'.
[14:05:02] [Exec] E: \ TeamCity-BuildAgent \ work \ 62023563850993a7 \ Web.nuget \ nuget.targets (88, 9): ошибка MSB3073: команда ""E:\TeamCity-BuildAgent\work\62023563850993a7\Web.nuget\nuget.exe"установить"E:\TeamCity-BuildAgent\work\62023563850993a7\ProductMvc\packages.config" -source "" -RequireConsent -solutionDir "E:\TeamCity-BuildAgent\work\6503386383386381605 \ "" вышел с кодом 1.
Обратите внимание, что source
Параметр в командной строке NuGet пуст. Может ли это быть причиной?
2 ответа
На сегодняшний день NuGet.targets имеет следующий способ указания пользовательских каналов:
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
<!-- The official NuGet package source (https://nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<PackageSource Include="https://nuget.org/api/v2/" />
<PackageSource Include="\\MyShare" />
<PackageSource Include="http://MyServer/" />
</ItemGroup>
Другой вариант - поместить NuGet.config рядом с файлом решения:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
<add key="MyShare" value="\\MyShare" />
<add key="MyServer" value="http://MyServer" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>
Очевидно, что пользовательские каналы NuGet устанавливаются не с помощью чего-либо в файлах решения или проекта или nuget.config в решении, а в nuget.config в профиле разработчика.
В TeamCity нет проверки агентом этого конфигурационного файла или записи в него, чтобы убедиться, что он содержит канал для самого сервера TeamCity.
Таким образом, восстановление пакета на TC с использованием пользовательского канала TC не будет "просто работать". Чтобы узнать обо всем этом, вам нужно потратить сотни фунтов клиентских денег в погоне за хвостом, а затем установить / скопировать ваш nuget.config из своего профиля в профиль учетной записи пользователя, на котором запущен агент сборки.
Какой ужас.