Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die NuGet-Paketwiederherstellung stellt alle Abhängigkeiten eines Projekts wieder her, die entweder in einer Projektdatei oder einer packages.config Datei aufgeführt sind. Sie können Pakete manuell mit nuget restore, dotnet restore, , msbuild -t:restoreoder über Visual Studio wiederherstellen. Die dotnet build Befehle dotnet run stellen Pakete automatisch wieder her, und Sie können Visual Studio so konfigurieren, dass Pakete automatisch wiederhergestellt werden, wenn ein Projekt erstellt wird.
Um eine übersichtlichere Entwicklungsumgebung zu fördern und die Repositorygröße zu reduzieren, stellt die Paketwiederherstellung alle Abhängigkeiten eines Projekts zur Verfügung, ohne sie in der Quellcodeverwaltung speichern zu müssen. Informationen zum Konfigurieren Ihres Quellcodeverwaltungs-Repositorys zum Ausschließen von Paketbinärdateien finden Sie unter "Pakete und Quellcodeverwaltung".
Verhalten der Paketwiederherstellung
Die Paketwiederherstellung versucht, alle Paketabhängigkeiten in dem Zustand zu versetzen, der den <PackageReference>s in einer Projektdatei entspricht, wie in .csproj oder <package>s in einer Datei packages.config. Die Paketwiederherstellung installiert zuerst die direkten Abhängigkeiten eines Projekts nach Bedarf und installiert dann alle Abhängigkeiten dieser Pakete im gesamten Abhängigkeitsdiagramm.
Wenn ein erforderliches Paket noch nicht installiert ist, versucht NuGet zunächst, es aus den lokalen globalen Paketen oder HTTP-Cacheordnern abzurufen. Wenn sich das Paket nicht in den lokalen Ordnern befindet, versucht NuGet, es aus allen Quellen herunterzuladen, die in Visual Studio unter "Tools>Options>NuGet Package Manager Package Manager>Package Sources" konfiguriert sind.
Während der Wiederherstellung ignoriert NuGet die Reihenfolge der Paketquellen und verwendet das Paket aus der ersten Quelle, die auf Anforderungen antwortet. Wenn die Wiederherstellung fehlschlägt, gibt NuGet den Fehler erst an, nachdem alle Quellen überprüft wurden. NuGet meldet dann einen Fehler nur für die letzte Quelle in der Liste. Der Fehler impliziert, dass das Paket in keiner der Quellen vorhanden war, obwohl es die anderen Fehler nicht einzeln auflistet.
Weitere Informationen zum NuGet-Verhalten finden Sie unter "Allgemeine NuGet-Konfigurationen".
Pakete wiederherstellen
Wenn die Paketverweise in der Projektdatei oder packages.config Datei korrekt sind, verwenden Sie das bevorzugte Tool, um Pakete wiederherzustellen:
Nach erfolgreicher Wiederherstellung:
- Bei Projekten, die
<PackageReference>verwenden, ist das Paket im lokalen Ordner global-packages vorhanden, und die Projektdatei obj/project.assets.json wird neu erstellt. - Bei Projekten, die packages.configverwenden, wird das Paket im Ordner "Pakete " des Projekts angezeigt.
- Das Projekt sollte jetzt erfolgreich gebaut werden.
Wenn die Paketverweise in der Projektdatei oder in der packages.config-Datei falsch sind und nicht dem gewünschten Zustand entsprechen, installieren oder aktualisieren Sie die richtigen Pakete, anstatt die Paketwiederherstellung zu verwenden.
Wenn nach dem Ausführen der Paketwiederherstellung Pakete oder paketbezogene Fehler fehlen, z. B. Fehlersymbole im Projektmappen-Explorer, folgen Sie den Anweisungen unter "Problembehandlung bei Paketwiederherstellungsfehlern", oder installieren Oder aktualisieren Sie die Pakete erneut. In Visual Studio bietet die Paket-Manager-Konsole mehrere Optionen zum erneuten Installieren von Paketen. Weitere Informationen finden Sie unter "Package-Update verwenden".
Wiederherstellen von Paketen in Visual Studio
In Visual Studio unter Windows können Sie Pakete automatisch oder manuell wiederherstellen. Konfigurieren Sie zuerst die Paketwiederherstellung über tools>Options>NuGet Package Manager.
Konfigurieren von Visual Studio-Paketwiederherstellungsoptionen
Konfigurieren Sie die folgenden Optionen für die Paketwiederherstellung unter Tools>Options>NuGet Package Manager>General.
NuGet das Herunterladen fehlender Pakete erlauben
Wählen Sie "NuGet zulassen", um fehlende Pakete herunterzuladen , um die Paketwiederherstellung und den Befehl "NuGet-Pakete wiederherstellen " zu aktivieren. Diese Auswahl legt die packageRestore/enabled Einstellung auf True im Abschnitt "packageRestore" der globalen NuGet.Config-Datei unter %AppData%\Roaming\NuGet auf Windows oder ~/.nuget/NuGet/ auf Mac oder Linux fest.
<configuration>
<packageRestore>
<add key="enabled" value="True" />
</packageRestore>
</configuration>
Hinweis
Um die packageRestore/enabled Einstellung global außer Kraft zu setzen, können Sie die Umgebungsvariable EnableNuGetPackageRestore auf "True" oder "False" festlegen, bevor Sie Visual Studio öffnen oder einen Build starten.
Um die Paketwiederherstellung für alle Benutzer auf einem Computer zu aktivieren oder zu deaktivieren, können Sie die Konfigurationseinstellungen der globalen Datei NuGet.Config in Windows unter %ProgramData%\NuGet\Config, manchmal unter einer bestimmten <IDE>\<Version>\<SKU> Visual Studio oder in Mac/Linux unter ~/.local/share hinzufügen. Einzelne Benutzer können dann die Wiederherstellung nach Bedarf auf Projektebene selektiv aktivieren. Weitere Informationen dazu, wie NuGet mehrere Konfigurationsdateien priorisiert, finden Sie unter "Allgemeine NuGet-Konfigurationen".
Von Bedeutung
Wenn Sie die packageRestore Einstellungen in NuGet.Config direkt bearbeiten, starten Sie Visual Studio neu, damit die Optionen die aktuellen Werte anzeigen.
Automatische Überprüfung auf fehlende Pakete während des Builds
Aktivieren Sie "Automatische Überprüfung auf fehlende Pakete" während des Builds in Visual Studio , um alle fehlenden Pakete automatisch wiederherzustellen, wenn Sie einen Build aus Visual Studio ausführen. Diese Einstellung wirkt sich nicht auf Builds aus der Befehlszeile MSBuild aus. Diese Auswahl legt die packageRestore/automatic Einstellung True im packageRestore Abschnitt der Datei "NuGet.Config" fest.
<configuration>
<packageRestore>
<add key="automatic" value="True" />
</packageRestore>
</configuration>
Sie müssen "NuGet zulassen" auswählen, um fehlende Pakete herunterzuladen, und während des Builds in Visual Studio in "Optionen" automatisch nach fehlenden Paketen suchen, um die Paketwiederherstellung während des Builds zu aktivieren.
Auswählen des Standardpaketverwaltungsformats
NuGet verfügt über zwei Paketverwaltungsformate, PackageReference und packages.config. Wählen Sie das Format aus, das Sie in der Dropdownliste unter "Paketverwaltung" verwenden möchten. Sie können auch auswählen, ob die Formatauswahl bei der ersten Paketinstallation zugelassen werden soll.
Hinweis
Wenn ein Projekt beide Paketverwaltungsformate nicht unterstützt, verwendet NuGet das Paketverwaltungsformat, das mit dem Projekt kompatibel ist. Dies ist möglicherweise nicht die Standardeinstellung, die Sie in den Optionen festgelegt haben. NuGet fordert dann bei der ersten Installation nicht zur Auswahl auf, auch wenn Sie diese Option ausgewählt haben.
Wenn Sie die Paket-Manager-Konsole zum Installieren des ersten Pakets in einem Projekt verwenden, fordert NuGet nicht zur Formatierungsauswahl auf, auch wenn diese Option in "Optionen" ausgewählt ist.
Manuelles oder automatisches Wiederherstellen von Paketen
Nachdem Sie die Paketwiederherstellung in "Optionen" aktiviert haben, können Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe klicken und "NuGet-Pakete wiederherstellen " auswählen, um Pakete jederzeit wiederherzustellen.
Wenn Sie die automatische Wiederherstellung in "Optionen" aktiviert haben, erfolgt die Paketwiederherstellung automatisch, wenn Sie ein Projekt aus einer Vorlage erstellen oder ein Projekt erstellen. Bei NuGet 4.0+ erfolgt die Wiederherstellung auch automatisch, wenn Sie Änderungen an einem SDK-Formatprojekt vornehmen.
Für Projekte, die <PackageReference> verwenden, können Sie die Paketverweise im Visual Studio-Projektmappen-Explorer unter Abhängigkeiten> anzeigen.Pakete. Pakete, die beim manuellen Wiederherstellen oder bei der Ausführung eines Builds nicht ordnungsgemäß installiert werden, zeigen Fehlersymbole im Projektmappen-Explorer an. Klicken Sie mit der rechten Maustaste auf das Projekt, wählen Sie "NuGet-Pakete verwalten" aus, und verwenden Sie den NuGet-Paket-Manager , um die betroffenen Pakete zu deinstallieren und neu zu installieren. Weitere Informationen finden Sie unter "Erneutes Installieren und Aktualisieren von Paketen".
Wenn der Fehler "Dieses Projekt" auf NuGet-Pakete verweist, die auf diesem Computer fehlen, oder eines oder mehrere NuGet-Pakete müssen wiederhergestellt werden, konnte aber nicht sein, da die Zustimmung nicht erteilt wurde, stellen Sie sicher, dass Sie die automatische Wiederherstellung aktiviert haben. Ältere Projekte finden Sie unter Migrieren zur automatischen Paketwiederherstellung. Siehe auch Problembehandlung bei Paketwiederherstellungsfehlern.
Wiederherstellen mithilfe der dotnet CLI
Der dotnet restore-Befehl stellt die Pakete wieder her, die von der Projektdatei aufgelistet werden <PackageReference>. Weitere Informationen finden Sie unter PackageReference in Projektdateien.
.NET Core 2.0 und höher dotnet build und dotnet run Befehle stellen Pakete automatisch wieder her. Ab NuGet 4.0 läuft dotnet restore denselben Code wie nuget restore.
So stellen Sie ein Paket mit dotnet restore wieder her:
- Öffnen Sie eine Befehlszeile, und wechseln Sie zu dem Verzeichnis, das Ihre Projektdatei enthält.
- Führen Sie
dotnet restoreaus.
Von Bedeutung
Um der Projektdatei einen fehlenden Paketverweis hinzuzufügen, verwenden Sie dotnet add package, das auch restore ausführt.
Wiederherstellen mithilfe der NuGet CLI
Der NuGet CLI-Wiederherstellungsbefehl lädt alle fehlenden Pakete herunter und installiert sie. Der Befehl funktioniert für Projekte, die entweder PackageReference oder packages.config für Paketverweise verwenden.
Wie installfolgt, fügt der restore Befehl nur Pakete auf dem Datenträger hinzu, ändert aber nicht die Projektdatei oder packages.config. Um Projektabhängigkeiten hinzuzufügen, verwenden Sie die Visual Studio Package Manager-Benutzeroberfläche oder -Konsole.
Führen Sie zum Wiederherstellen von Paketen den folgenden Befehl aus:
nuget restore <projectPath>
Der restore Befehl verwendet eine Lösungsdatei oder eine package.config Datei im angegebenen Projektpfad.
Um beispielsweise alle Pakete für MySolution.sln im aktuellen Verzeichnis wiederherzustellen, führen Sie Folgendes aus:
nuget restore MySolution.sln
Hinweis
Verwenden Sie für Projekte im Nicht-SDK-Stil, die PackageReference verwenden, stattdessen msbuild -t:restore, um Pakete wiederherzustellen.
Wiederherstellen mithilfe von MSBuild
Sie können msbuild -t:restore verwenden, um Pakete in NuGet 4.x+ und MSBuild 15.1+ wiederherzustellen, die in Visual Studio 2017 und höher enthalten sind.
Mit diesem Befehl werden Pakete in Projekten wiederhergestellt, die PackageReference für Paketverweise verwenden. Ab MSBuild 16.5+ unterstützt der Befehl auch packages.config Paketverweise bei Verwendung mit -p:RestorePackagesConfig=true.
So verwenden Sie MSBuild-Wiederherstellung:
Öffnen Sie eine Entwickler-Eingabeaufforderung, indem Sie nach der Entwickler-Eingabeaufforderung suchen und die Eingabeaufforderung über das Windows-Startmenü starten, das alle erforderlichen Pfade für MSBuild konfiguriert.
Wechseln Sie zum Projektordner, und geben Sie ein
msbuild -t:restore.Nachdem die Wiederherstellung abgeschlossen ist, geben Sie die Eingabetaste
msbuildein, um das Projekt neu zu erstellen. Stellen Sie sicher, dass die MSBuild-Ausgabe angibt, dass der Build erfolgreich abgeschlossen wurde.
Hinweis
Sie können msbuild -restore verwenden, um restore auszuführen, das Projekt neu zu laden und zu erstellen, da "Build" das Standardziel ist. Weitere Informationen finden Sie unter "Wiederherstellen und Erstellen mit einem MSBuild"-Befehl.
Wiederherstellen mit Azure Pipelines oder Azure DevOps Server
Wenn Sie eine Builddefinition in Azure Pipelines erstellen, können Sie die NuGet CLI-Wiederherstellungsaufgabe oder die Dotnet CLI-Wiederherstellungsaufgabe in die Definition einschließen, bevor Buildaufgaben ausgeführt werden. Einige Buildvorlagen enthalten standardmäßig die Wiederherstellungsaufgabe.
Azure DevOps Server und TFS 2013 und höher stellen Pakete während des Builds automatisch wieder her, wenn Sie eine TFS 2013- oder höher-Teambuildvorlage verwenden. Sie können auch einen Buildschritt einschließen, um eine Befehlszeilenwiederherstellungsoption auszuführen, oder optional die Buildvorlage zu einer späteren Version migrieren. Weitere Informationen finden Sie unter Einrichten der Paketwiederherstellung mit Team Foundation Build.
Einschränken von Paketversionen
Die NuGet-Wiederherstellung stellt mit jeder Methode sicher, dass die in packages.config oder der Projektdatei von Ihnen festgelegten Versionsbeschränkungen berücksichtigt werden.
In packages.configkönnen Sie einen
allowedVersionsBereich in der Abhängigkeit angeben. Weitere Informationen finden Sie unter Einschränkungen für Upgradeversionen. Beispiel:<package id="Newtonsoft.json" version="6.0.4" allowedVersions="[6,7)" />In einer Projektdatei können Sie den Versionsbereich in der
VersionEigenschaft der Abhängigkeit angeben. Beispiel:<PackageReference Include="Newtonsoft.json" Version="[6,7)" />
Verwenden Sie in beiden Fällen die in der Paketversionsverwaltung beschriebene Notation.
Erzwungene Wiederherstellung von entfernten Paketquellen
Standardmäßig verwenden NuGet-Wiederherstellungsvorgänge Pakete aus den lokalen globalen Paketen und http-Cacheordnern , wie unter "Verwalten der globalen Pakete und Cacheordner" beschrieben. Verwenden Sie die folgenden Optionen, um die Verwendung dieser lokalen Pakete zu vermeiden.
So löschen Sie alle lokalen Caches:
- Wählen Sie in Visual Studio die Schaltfläche "Alle NuGet-Cache(en) löschen " unter "Tools>Options>NuGet Package Manager>General" aus.
- Verwenden Sie
dotnet nuget locals all --clearin der dotnet CLI . - Verwenden Sie
nuget locals all -clearin der NuGet CLI .
So vermeiden Sie die Verwendung der Pakete im Ordner "Globale Pakete ":
- Löschen Sie den Ordner mithilfe
nuget locals global-packages -clearoderdotnet nuget locals global-packages --clear. - Legen Sie die umgebungsvariable NUGET_PACKAGES vorübergehend auf einen anderen Ordner fest.
- Erstellen Sie eine NuGet.Config-Datei, die für
globalPackagesFolderPackageReferenceoder fürrepositoryPathpackages.config auf einen anderen Ordner festgelegt wird. Weitere Informationen finden Sie unter Konfigurationseinstellungen. - Geben Sie nur für MSBuild einen anderen Ordner mit der
RestorePackagesPathEigenschaft an.
So vermeiden Sie die Verwendung von Paketen im HTTP-Cache:
- Löschen Sie den Cache mithilfe
nuget locals http-cache -clearoderdotnet nuget locals http-cache --clear. - Legen Sie die umgebungsvariable NUGET_HTTP_CACHE_PATH vorübergehend auf einen anderen Ordner fest.
- Verwenden Sie für
nuget restoredie-NoHttpCacheOption, oder fürdotnet restoredie--no-http-cacheOption. Diese Optionen wirken sich nicht auf Wiederherstellungsvorgänge über den Visual Studio-Paket-Manager oder die Konsole aus.
Migrieren zur automatischen Paketwiederherstellung
Frühere Versionen von NuGet unterstützten eine MSBuild-integrierte Paketwiederherstellung. Projekte, die die veraltete MSBuild-integrierte Paketwiederherstellung verwenden, sollten zur automatischen Paketwiederherstellung migriert werden.
Diese Projekte enthalten in der Regel einen NUGET-Ordner mit drei Dateien: NuGet.config, nuget.exeund NuGet.targets. Die Datei NuGet.targets bewirkt, dass NuGet den msBuild-integrierten Ansatz verwendet, sodass sie entfernt werden muss.
So migrieren Sie zur automatischen Paketwiederherstellung:
- Aktivieren Sie die automatische Paketwiederherstellung.
- Schließen Sie Visual Studio.
- Löschen Sie ".nuget/nuget.exe " und ".nuget/NuGet.targets".
- Entfernen Sie für jede Projektdatei das
<RestorePackages>Element, und entfernen Sie alle Verweise auf NuGet.targets.
So testen Sie die automatische Paketwiederherstellung:
- Entfernen Sie den Ordner "Pakete " aus der Lösung.
- Öffnen Sie die Projektmappe in Visual Studio, und starten Sie einen Build. Die automatische Paketwiederherstellung sollte jedes Abhängigkeitspaket herunterladen und installieren, ohne es zur Quellcodeverwaltung hinzuzufügen.