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?
Antworten
Zu viele Anzeigen?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
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
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.
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) }
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.
- See previous answers
- Weitere Antworten anzeigen