796 Stimmen

Wie kann ich NuGet dazu bringen, alle Pakete in der packages.config zu installieren/aktualisieren?

Ich habe eine Lösung, die mehrere Projekte enthält. Die meisten Referenzen von Drittanbietern fehlen, aber es gibt packages.config Datei für jedes Projekt. Wie kann ich NuGet dazu bringen, alle benötigten Pakete zu installieren/aktualisieren? Muss dies für jedes Projekt über die Befehlszeile erfolgen?

15voto

Erik Schierboom Punkte 15533

Mit der neuesten NuGet 2.5 Version gibt es nun eine "Update All" Schaltfläche im Paketmanager: http://docs.nuget.org/docs/release-notes/nuget-2.5#Update_All_button_to_allow_updating_all_packages_at_once

11voto

mejiamanuel57 Punkte 6077

Ich verwende Visual Studio 2015 und die oben genannten Lösungen funktionierten nicht für mich, also tat ich das Folgende:

Löschen Sie den Ordner "packages" aus meiner Projektmappe sowie die Ordner "bin" und "obj" aus jedem Projekt in der Projektmappe und führen Sie einen Neuaufbau durch.

Vielleicht haben Sie den nächsten Fehler:

nuget.exe kann nicht gefunden werden

Um dieses Problem zu lösen: Ändern Sie diese Zeile in Ihrer NuGet.targets-Datei und setzen Sie sie auf true:

<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>

Referenz: https://stackoverflow.com/a/30918648 y https://stackoverflow.com/a/20502049

6voto

Nihad Delic Punkte 200

Nach 3 Stunden der Suche und Untersuchung.

Ich hatte Probleme damit, weil wir zwei Mitglieder im Team haben (mit GitHub Source Control), weil wir nicht beschränken Dateien für Pakete für das Senden an Remote-Repository, eines der Teammitglieder wurde Pakete an Server senden und ich habe ziehen, dass Änderungen an meinem lokalen.

Danach hatte ich das gleiche Problem wie PO, auch war ich nicht in der Lage, mein API-Projekt auf dem Server zu veröffentlichen.

Bei den und habe ich gerade verwendet

Update-Paket -Reinstallation - Führen Sie diesen Befehl in der Paketmanager-Konsole aus

Mit diesem Befehl werden alle Pakete, die Sie in Ihrer Lösung verwendet haben, neu installiert. (Für jedes Projekt)

Installieren Sie alle Pakete in ALLEN PROJEKTEN der aktuellen Lösung neu:

Update-Paket -Projektname 'NameOfProject' -Reinstall - Führen Sie diesen Befehl in der Paketmanager-Konsole aus

Dieser Befehl installiert alle Pakete neu, die mit dem Projekt in Verbindung stehen, das Sie nach "-ProjectName" angegeben haben. Und ich denke, dass dies besser ist, weil ich eine halbe Stunde warten musste, um alle Pakete in der Lösung neu zu installieren.

Hierfür vielen Dank an Rodolpho Brock .

Außerdem würde ich Ihnen empfehlen, wenn Sie Änderungen von einem entfernten Server abrufen, die Schaltfläche "Pakete wiederherstellen" zu drücken, die von Visual Studio angezeigt wird.

5voto

David Punkte 2119

Ich glaube, das Erste, was Sie tun müssen, ist die Funktion zur Wiederherstellung von Paketen aktivieren . Siehe auch ici . Dies geschieht auf der Ebene der Lösung (nicht des Projekts).

Aber das bringt Sie nicht weiter - ich hatte ein ähnliches Problem, nachdem ich die Wiederherstellungsfunktion aktiviert hatte. (VS2013, NuGet 2.8.)

Es stellte sich heraus, dass ich die Pakete (unbeabsichtigt) in die Versionskontrolle übergeben hatte, als ich das Projekt übergab. sondern Visual Studio (und das Plugin für die Versionskontrolle) hatten die Binärdateien beim Einchecken hilfreicherweise ignoriert.

Das Problem trat auf, als ich einen Release-Zweig erstellte. Meine lokale Kopie des dev/main/trunk-Zweigs enthielt die Binärdateien, da ich die Pakete ursprünglich dort installiert/heruntergeladen hatte.
Im neuen Versionszweig jedoch,

  • die Paketordner und .nupkg Dateien waren alle vorhanden - NuGet dachte also, es gäbe nichts wiederherzustellen;
  • aber gleichzeitig war keine der DLLs vorhanden, d.h. die Verweise auf Drittanbieter fehlten, so dass ich nicht kompilieren konnte.

Ich habe alle Paketordner in $(SolutionDir)/packages (unter dem Veröffentlichungszweig) und führte dann einen vollständigen Rebuild durch, und diesmal war der Build erfolgreich.
... und dann bin ich natürlich zurückgegangen und habe die Paketordner aus der Versionskontrolle entfernt (im Stamm- und Release-Zweig). Ich bin mir (noch) nicht im Klaren darüber, ob die repositories.config Datei sollte ebenfalls entfernt werden.

Viele der Komponenten, die von den Projektvorlagen für Sie installiert werden, sind - zumindest bei Webprojekten - NuGet-Pakete. Das heißt, dieses Problem ist nicht auf Pakete beschränkt, die Sie hinzugefügt haben.
Aktivieren Sie daher die Paketwiederherstellung sofort nach dem Erstellen des Projekts/der Lösung und löschen Sie vor dem ersten Einchecken die Option packages Ordner (und stellen Sie sicher, dass Sie die .nuget Ordner in der Versionskontrolle).

Haftungsausschluss: Ich habe eine andere Antwort hier auf SO gesehen, die besagt, dass das Löschen der packages Die Mappe war Teil des Beschlusses. Das hat mich auf die richtige Spur gebracht, also möchte ich dem Autor Anerkennung zollen, aber ich kann die Frage/Antwort nicht mehr finden. Ich werde einen Beitrag veröffentlichen, wenn ich darüber stolpere.

Ich möchte auch darauf hinweisen, dass Update-Package -reinstall wird die .sln y .csproj / .vbproj Akten. Zumindest hat es das in meinem Fall getan. Was IMHO macht diese Option viel weniger attraktiv.

5voto

Fetchez la vache Punkte 4632

Für diejenigen, die hier ankommen, weil der Build-Server dies missachtet hat, können Sie ein MSBuild-Ziel erstellen, indem Sie den Befehl exec ausführen, um die nuget wiederherstellen (in diesem Fall befindet sich nuget.exe im Ordner .nuget und nicht im Pfad), der dann in einem TeamCity-Erstellungsschritt unmittelbar vor der Erstellung der Lösung ausgeführt werden kann

<Target Name="BeforeBuild">
  <Exec Command="..\.nuget\nuget restore ..\MySolution.sln"/>
</Target>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X