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?

993voto

Matt Ward Punkte 45429

Sie können verwenden nuget.exe um Ihre Pakete wiederherzustellen, oder wenn NuGet 2.7 oder höher installiert ist, können Sie Ihre Lösung einfach in Visual Studio kompilieren, wodurch auch die fehlenden Pakete wiederhergestellt werden.

Für NuGet.exe können Sie den folgenden Befehl für jedes Projekt ausführen.

nuget install packages.config

Oder mit NuGet 2.7 können Sie alle Pakete in der Lösung wiederherstellen über die Befehlszeile.

nuget restore YourSolution.sln

Beide werden die Pakete herunterziehen. Ihre Projektdateien werden bei der Ausführung dieses Befehls jedoch nicht geändert, so dass das Projekt bereits einen Verweis auf die NuGet-Pakete enthalten sollte. Wenn dies nicht der Fall ist, können Sie Visual Studio verwenden, um die Pakete zu installieren.

Mit NuGet 2.7 und höher stellt Visual Studio fehlende NuGet-Pakete automatisch wieder her, wenn Sie Ihre Lösung erstellen, so dass Sie NuGet.exe nicht mehr verwenden müssen.

Um alle Pakete in Ihrer Projektmappe zu aktualisieren, stellen Sie sie zunächst wieder her. Anschließend können Sie entweder NuGet.exe verwenden, um die Pakete zu aktualisieren, oder Sie können die Pakete in Visual Studio über das Konsolenfenster des Paketmanagers aktualisieren, oder Sie können das Dialogfeld "Pakete verwalten" verwenden.

Über die Befehlszeile können Sie die Pakete in der Lösung auf die neueste Version aktualisieren, die auf nuget.org verfügbar ist.

nuget update YourSolution.sln

Beachten Sie, dass dadurch keine PowerShell-Skripte in NuGet-Paketen ausgeführt werden.

Innerhalb von Visual Studio können Sie die Paketmanager-Konsole um auch die Pakete zu aktualisieren. Dies hat den Vorteil, dass alle PowerShell-Skripte als Teil der Aktualisierung ausgeführt werden, während sie bei Verwendung von NuGet.exe nicht ausgeführt werden. Mit dem folgenden Befehl werden alle Pakete in jedem Projekt auf die neueste Version aktualisiert, die auf nuget.org verfügbar ist.

Update-Package

Sie können dies auch auf ein Projekt beschränken.

Update-Package -Project YourProjectName

Wenn Sie die Pakete mit den gleichen Versionen wie zuvor installieren möchten, können Sie den Befehl -reinstall Argument mit Update-Package Befehl.

Update-Package -reinstall

Sie können dies auch auf ein Projekt beschränken.

Update-Package -reinstall -Project YourProjectName

El -reinstall wird das Paket zunächst deinstalliert und dann wieder in ein Projekt installiert.

Oder Sie können die Pakete mit dem Befehl Manage Packages Dialog.

Aktualisierungen:

  • 2013/07/10 - Aktualisiert mit Informationen zur Nuget-Wiederherstellung in NuGet 2.7
  • 2014/07/06 - Aktualisiert mit Informationen über die automatische Wiederherstellung von Paketen in Visual Studio und die Antwort auf den neuesten Stand gebracht mit anderen Änderungen an NuGet.
  • 2014/11/21 - Aktualisiert mit Informationen über -reinstall

615voto

Rodolpho Brock Punkte 7717

Paketmanager-Konsole öffnen

  • Ansicht -> Andere Fenster -> Paketmanager-Konsole

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

Update-Package -Reinstall

Installieren Sie alle Pakete in SPECIFIC PROJECT der aktuellen Lösung neu ( Dank an Einzigartigkeit y Asche999 ):

Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

176voto

Alex Punkte 9066

Es gibt eine andere, neuere und schnellere Möglichkeit, dies von Visual Studio aus zu tun. Schauen Sie sich ce poste von David Ebbo, und verweisen Sie auf den Kommentarbereich, wenn Sie Probleme haben. Im Grunde tun Sie Folgendes in der Eingabeaufforderung des Paketmanagers:

PM> Install-Package NuGetPowerTools
PM> Enable-PackageRestore

Anschließend werden die Pakete beim Erstellen Ihrer Lösung automatisch installiert, falls sie fehlen.

Aktualisierung:

Diese Funktion ist integriert in Nuget 1.6 mit Visual Studio-Integration, so dass Sie nicht einmal NuGetPowerTools installieren oder Befehle eingeben müssen. Alles, was Sie tun müssen, ist

Klicken Sie mit der rechten Maustaste auf den Lösungsknoten im Projektmappen-Explorer und wählen Sie NuGet-Paketwiederherstellung aktivieren.

Lesen Sie dieser Artikel für weitere Einzelheiten.

25voto

David Martin Punkte 11208

Hier ist eine weitere Lösung, wenn Sie Website-Projekte verwenden oder die Wiederherstellung von NuGet-Paketen nicht aktivieren möchten.

Sie können die Konsole des Paketmanagers verwenden, um alle Pakete in der Datei package.config aufzulisten und sie neu zu installieren.

# read the packages.config file into an XML object
[xml]$packages = gc packages.config

# install each package 
$packages.packages.package | % { Install-Package -id $($_.id) -Version $($_.version) }

19voto

unarity Punkte 2261
Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

Dies ist das beste und einfachste Beispiel, das ich gefunden habe. Es installiert alle Nugts, die in der packages.config aufgelistet sind, neu und behält die aktuellen Versionen bei. Ersetzen Sie YourProjectNameGoesHere mit dem Projektnamen.

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