TFS kann das NuGet-Paket nicht wiederherstellen

8

Ich habe TFS einige Continuous Integration Builds gemacht. Heute ist es um eine Lösung gegangen. Es scheint, dass AutoMapper nicht gefunden werden kann. Alle anderen Pakete können gut gefunden werden.

Ein paar relevante Punkte:

  • Keines der Pakete befindet sich in der Quellcodeverwaltung, wir lassen es von TFS wiederherstellen.
  • Wir haben einen internen NuGet-Feed, aber bei anderen Lösungen scheint es kein Problem zu sein. In dieser Lösung erhalten wir immer noch Entity Framework zur Wiederherstellung - nur nicht AutoMapper.
  • Ich habe versucht, die NuGet-Pakete zu entfernen und neu hinzuzufügen. Kein Glück.
  • Wenn ich mit Remote Desktop eine Verbindung zum Build-Server herstelle und dort das Projekt in Visual Studio öffne, werden die Pakete wiederhergestellt und die Builds ordnungsgemäß erstellt.
  • Ich kann manuell erstellen, indem ich D:\"Program Files"\"Microsoft Team Foundation Server 12.0"\Tools\Nuget.exe restore gefolgt von msbuild MySolutoin.sln ausführe.
  • Unser TFS-Server ist auf unserem Laufwerk D: \ installiert.

Dies stammt aus den TFS-Logs:

%Vor%     
Pharylon 30.03.2015, 21:02
quelle

3 Antworten

10

Ich habe das auch gesehen. Es scheint ausgelöst zu werden, sobald die NuGet-Paketwiederherstellung in den internen Feed wechselt. Sobald dies der Fall ist, wird nicht mehr zum offiziellen Feed von nuget.org gewechselt und weiterhin nach den Paketen auf dem internen Feed gesucht.

Stellen Sie sicher, dass beide Paketquellen Ihrer NuGet.config-Datei hinzugefügt wurden. Stellen Sie außerdem sicher, dass beide Quellen "aktiv" sind.

%Vor%

Siehe NuGet-Konfigurationsdatei .

    
Matt Brooks 24.04.2015, 21:35
quelle
1

Matts Antwort hat mich auf den richtigen Weg gebracht, aber wir verwenden kein internes Futter, also musste ich noch mehr graben. Diese Antwort funktioniert mindestens für ein Projekt, das in Visual Studio 2015 erstellt und von TFS 2015 erstellt wurde.

Öffnen Sie in Visual Studio die NuGet-Paket-Manager-Einstellungen (Menü Extras & gt; NuGet Paket-Manager & gt; Paket-Manager-Einstellungen). Wählen Sie "Paketquellen" aus der Optionsliste auf der linken Seite.

Erstellen Sie die Datei nuget.config im Stammverzeichnis der Lösung. Dies sollte derselbe Ordnerpfad sein wie Ihre ".sln" -Lösungsdatei. Kopiere folgendes in die Konfigurationsdatei:

%Vor%

Erstellen Sie im <packageSources> -Tag einen <add key="" value="" /> -Eintrag für jede Quelle, die im Optionsfenster "Package Sources" aufgelistet ist. Der Schlüssel ist der Name der Quelle, der über der URL angezeigt wird, und der Wert ist die URL selbst. Fügen Sie diejenigen hinzu, die sowohl unter "Verfügbare Paketquellen" als auch "Maschinenweite Paketquellen" aufgeführt sind. Ich habe keinen Eintrag für das lokale Dateisystem erstellt, da es in dieser Lösung nicht verwendet wurde. Basierend auf dem obigen Screenshot enthält die vollständige Konfigurationsdatei nun Folgendes:

%Vor%

Nachdem TFS die Datei nuget.config an die Quellcodeverwaltung übergeben hat, konnte er alle erforderlichen NuGet-Pakete herunterladen und die Lösung erfolgreich erstellen.

    
Andy Vaal 23.02.2018 12:12
quelle
0

Zusätzlich zu Matts Antwort möchte ich die folgenden gut versteckten Sachen aus der NuGet-Dokumentation hervorheben:

  

NuGet-Konfigurationsdateien werden in der folgenden Prioritätsreihenfolge behandelt   (am nächsten zu dem Ordner nuget.exe läuft von Wins), zum Beispiel unter der Annahme   Das Lösungsverzeichnis ist c:\a\b\c :

     
  • c:\a\b\c\.nuget\nuget.config - Diese Datei wird nur für die Lösung verwendet   Level-Pakete, und wird nicht in nugget 3.0 - 3.4 unterstützt
  •   
  • c:\a\b\c\nuget.config
  •   
  • c:\a\b\nuget.config
  •   
  • c:\a\nuget.config
  •   
  • c:\nuget.config
  •   
  • Benutzerspezifische Konfigurationsdatei,    %AppData%\NuGet\nuget.config .
  •   
  • Oder die benutzerdefinierte Datei durch Option    -ConfigFile .
  •   

Dies könnte ein seltsames Verhalten in bestimmten Szenarien erklären, in denen eine Wiederherstellung einen konfigurierten Feed übernimmt oder nicht, je nachdem, ob Sie mit nuget 2.x oder 3.x

wiederherstellen

Bearbeiten: und ich fand noch einen weiteren Grund, warum Pakete möglicherweise nicht gefunden werden :

  

Ich habe das Paket "A" mit der Version 1.1.1.0 .

     

Vor 3.4 funktioniert dieser Befehl gut:

     

nuget install A -version 1.1.1.0

     

Mit NuGet 3.4 RC bekomme ich:

     

An error occurred while retrieving package metadata for 'A.1.1.1' from source 'N'. An error occurred while retrieving package metadata for 'A.1.1.1' from source 'N'. Data at the root level is invalid. Line 1, position 1.

     

...

     

Der Client behandelt 1.1, 1.1.0, 1.01.0 und 1.1.0.0 als die gleiche Version   Verwenden von SemVer-Regeln. Der Grund, warum nicht normalisierte Versionen speziell waren   in der Vergangenheit cased ist, weil für v2 http Anrufe der Client würde zuerst   Senden Sie die Versionszeichenfolge genau so, wie der Benutzer sie angegeben hat

    
Grimace of Despair 14.09.2016 07:57
quelle