"Невозможно найти версию" во время TFS Build 2015 при восстановлении пакетов NuGet

У меня возникают проблемы с восстановлением пакета NuGet во время сборки TFS Build 2015.

Поскольку для некоторых пакетов требуется клиент NuGet 3.x, я сконфигурировал новую сборку сценариев для использования настраиваемого местоположения NuGet, где я разместил исполняемый файл NuGet Command-Line 3.x beta.

Всякий раз, когда я запускаю сборку, все пакеты не могут быть восстановлены, а NuGet выбрасывает ошибку "Не удается найти версию...":

Unable to find version '1.1.10' of package 'Microsoft.Bcl'.
Unable to find version '4.0.10' of package 'System.Threading'.
Unable to find version '1.1.37' of package 'System.Collections.Immutable'.
Unable to find version '1.0.0' of package 'Owin'.
Unable to find version '4.1.0' of package 'NLog'.
Unable to find version '7.0.1' of package 'Newtonsoft.Json'.
Unable to find version '2.0.1' of package 'MongoDB.Driver.Core'.
Unable to find version '2.0.1' of package 'MongoDB.Driver'.
Unable to find version '2.0.1' of package 'MongoDB.Bson'.
Unable to find version '3.0.1' of package 'Microsoft.Owin.Security.OAuth'.

... и еще больше пакетов. Я считаю, что проблема очевидна.

Когда я создаю одно и то же решение на машине сборки с помощью Visual Studio, все пакеты будут восстановлены успешно.

Как это решить?

Ответы

Ответ 1

В моем случае проблема заключалась в том, что пользовательский NuGet.config, расположенный в C:\Users\[User name]\AppData\Roaming\NuGet\NuGet.config (где [User name] является пользователем, который запускает службу Windows агента сборки) указывал на API NuGet v2 в то время как моя сборка уже использует NuGet Command-Line 3.x.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <!-- CHANGING V2 TO V3 IN THE URI VALUE SOLVED THE ISSUE! -->
    <add key="nuget.org" value="https://www.nuget.org/api/v3/" />
  </packageSources>
</configuration> 

Ответ 2

В моем случае Nuget.Config, был в:

C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\NuGet

Итак, найдите Nuget.Config в своем C:\.

Пользователь зависит от учетной записи, которую вы настроили Agent

Ответ 3

Если по какой-либо причине обновление NuGet.config в папке Роуминг не является опцией или нежелательным, также можно добавить файл конфигурации в корень решения.

Согласно документам:

  • Файлы NuGet.Config для конкретного проекта, расположенные в любой папке из папки решений до корня диска. Они позволяют контролировать настройки по мере их применения к проекту или группе проектов.
  • Файл NuGet.Config, специфичный для решения, расположенный в папке .nuget в решении. Параметры в этом файле применяются только к пакетам решений и поддерживаются только в NuGet 3.3 и более ранних версиях. Он игнорируется для NuGet 3.4 и более поздних версий.

Конфигурировать расположение и использование файлов

Ответ 4

Убедитесь, что установлен источник пакета...

Перейдите в Инструменты → Диспетчер пакетов NuGet → Настройки диспетчера пакетов

Затем нажмите "Источники пакетов" и убедитесь, что пакет установлен.

введите описание изображения здесь