wake-up-neo.com

"Version kann nicht gefunden werden" während TFS Build 2015 beim Wiederherstellen von NuGet-Paketen

Ich habe Probleme mit der Wiederherstellung des NuGet-Pakets während eines TFS Build 2015.

Da für einige Pakete der NuGet 3.x-Client erforderlich ist, habe ich den neuen skriptfähigen Build so konfiguriert, dass ein benutzerdefinierter NuGet-Speicherort verwendet wird, an dem die ausführbare Datei von NuGet Commandline 3.x beta abgelegt wurde.

Wenn ich einen Build ausführte, können nicht alle Pakete wiederhergestellt werden, und NuGet wirft das "Version kann nicht gefunden werden ..." error:

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'.

... und noch mehr Pakete. Ich glaube, das Problem ist klar.

Wenn ich dieselbe Lösung in der Build-Maschine mit Visual Studio erstelle, werden alle Pakete erfolgreich wiederhergestellt.

Wie löse ich das?

17

In meinem Fall bestand das Problem darin, dass NuGet.config unter C:\Users\[User name]\AppData\Roaming\NuGet\NuGet.config (wobei [User name] der Benutzer ist, der den Windows-Dienst des Build-Agenten ausführt) benutzerweit auf NuGet API v2 verweist, während mein Build bereits NuGet Command-Line 3 verwendet .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> 
22

In meinem Fall war der Nuget.Config in:

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

Suchen Sie also nach Nuget.Config in Ihrem C:\.

Der Benutzer hängt von dem Konto ab, für das Sie die Variable Agent konfiguriert haben.

3
willianleite

Wenn aus irgendeinem Grund das Aktualisieren von NuGet.config im Roaming-Ordner keine Option oder unerwünscht ist, ist es auch möglich, die Konfigurationsdatei zum Lösungsstamm hinzuzufügen.

Laut den Unterlagen: 

  • Projektspezifische NuGet.Config-Dateien, die sich in einem beliebigen Ordner vom Lösungsordner bis zum Stammverzeichnis des Laufwerks befinden. Diese ermöglichen die Kontrolle der Einstellungen, wie sie für ein Projekt oder eine Gruppe von Projekten gelten.
  • Eine lösungsspezifische NuGet.Config-Datei, die sich in einem .nuget-Ordner in der Projektmappe befindet. Die Einstellungen in dieser Datei gelten nur für lösungsweite Pakete und werden nur in NuGet 3.3 und früheren Versionen unterstützt. Wird für NuGet 3.4 und höher ignoriert.

Dateispeicherorte und -verwendungen konfigurieren

1
Emiel Koning