Восстановление пакета 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 из своего профиля в профиль учетной записи пользователя, на котором запущен агент сборки.

Какой ужас.

Другие вопросы по тегам