Problembehandlung bei der Paketwiederherstellung

In diesem Artikel erhalten Sie Informationen zu Fehlern, die beim Wiederherstellen von Paketen häufig auftreten, sowie entsprechende Anleitungen zur Problembehebung.

Die Paketwiederherstellung versucht, alle Paketabhängigkeiten im richtigen Zustand zu installieren, der den Paketverweisen in Ihrer Projektdatei ( .csproj) oder Ihrer Datei packages.config entspricht. (In Visual Studio werden die Verweise im Projektmappen-Explorer unter dem Knoten Dependencies\NuGet oder References angezeigt.) Um die erforderlichen Schritte zur Wiederherstellung von Paketen durchzuführen, lesen Sie Wiederherstellen von Paketen. Wenn die Paketverweise in Ihrer Projektdatei ( .csproj) oder Ihrer Datei packages.config falsch sind (sie stimmen nach der Paketwiederherstellung nicht mit dem gewünschten Zustand überein), müssen Sie die Pakete installieren oder aktualisieren. In diesem Fall kann die Paketwiederherstellung nicht verwendet werden.

Wenn Ihnen die hier aufgeführten Anweisungen nicht weiterhelfen, melden Sie bitte das Problem auf GitHub, damit wir das Szenario gründlich prüfen können. Verwenden Sie nicht das Steuerelement „Ist diese Seite hilfreich?“, das möglicherweise auf dieser Seite angezeigt wird, da wir Sie darüber nicht erreichen können, wenn wir weitere Informationen benötigen.

Schnelle Lösung für Visual Studio-Benutzer

Wenn Sie Visual Studio verwenden, sollten Sie wie folgt zunächst die Paketwiederherstellung aktivieren. Andernfalls können Sie diesen Abschnitt überspringen.

  1. Klicken Sie auf den Menübefehl Extras > NuGet-Paket-Manager > Paket-Manager-Einstellungen.
  2. Legen Sie unter Paketwiederherstellung beide Optionen fest.
  3. Klicken Sie auf OK.
  4. Erstellen Sie das Projekt neu.

Enable NuGet package restore in Tool/Options

Sie können diese Einstellungen auch in Ihrer NuGet.Config-Datei ändern (vgl. Abschnitt Zustimmung). Wenn das Projekt ein älteres Projekt ist, in dem die in MSBuild integrierte Paketwiederherstellung verwendet wird, müssen Sie möglicherweise zur automatischen Paketwiederherstellung migrieren.

This project references NuGet package(s) that are missing on this computer (Dieses Projekt verweist auf NuGet-Pakete, die ggf. auf diesem Computer fehlen)

Vollständige Fehlermeldung:

This project references NuGet package(s) that are missing on this computer.
Use NuGet Package Restore to download them. The missing file is {name}.

Dieser Fehler tritt auf, wenn Sie versuchen, ein Projekt zu erstellen, das Verweise auf mindestens ein NuGet-Paket enthält, das Paket zu diesem Zeitpunkt jedoch nicht auf dem Computer oder in dem Projekt vorhanden ist.

  • Wenn das PackageReference-Verwaltungsformat verwendet wird, kann dieser Fehler einer Migration von packages.config zu PackageReference geschuldet sein. Er muss aus der Projektdatei manuell entfernt werden.
  • Bei Verwendung von packages.config bedeutet der Fehler, dass das Paket nicht im Ordner packages des Stammverzeichnisses der Projektmappe installiert ist.

Diese Situation tritt häufig auf, wenn Sie den Quellcode des Projekts über die Quellcodeverwaltung oder einen anderen Download erhalten. Pakete werden in der Regel von Quellcode oder Downloads ausgeschlossen, da sie aus Paketfeeds wie nuget.org wiederhergestellt werden (Informationen dazu finden Sie unter Überspringen von NuGet-Paketen in Quellcodeverwaltungssystemen). Wenn diese Pakete darin enthalten wären, würde dies ggf. es zu einer Überfrachtung des Repositorys oder zum Erstellen von unnötig großen ZIP-Dateien führen.

Der Fehler kann auch auftreten, wenn Ihre Projektdatei absolute Pfade zu Paketspeicherorten enthält, und Sie das Projekt verschieben.

Verwenden Sie eine der folgenden Methoden, um die Pakete wiederherzustellen:

Nach einer erfolgreichen Wiederherstellung sollte das Paket im Ordner global-packages vorhanden sein. Bei Projekten, die PackageReference verwenden, sollte die obj/project.assets.json-Datei wiederhergestellt werden; bei Projekten, die packages.config verwenden, sollte das Paket im packages-Ordner des Projekts erscheinen. Das Projekt sollte jetzt erfolgreich erstellt werden. Wenn dies nicht der Fall sein sollte, melden Sie das Problem auf GitHub, damit wir dies überprüfen können.

Assets file project.assets.json not found (Objektdatei „project.assets.json“ nicht gefunden)

Vollständige Fehlermeldung:

Assets file '<path>\project.assets.json' not found. Run a NuGet package restore to generate this file.

Die project.assets.json-Datei behält das Abhängigkeitsdiagramm eines Projekts bei, wenn das PackageReference-Verwaltungsformat verwendet wird. So wird sichergestellt, dass alle erforderlichen Pakete auf dem Computer installiert sind. Da diese Datei dynamisch durch die Paketwiederherstellung erzeugt wird, wird sie normalerweise nicht zur Quellcodeverwaltung hinzugefügt. Infolgedessen tritt dieser Fehler auf, wenn ein Projekt mit einem Tool wie msbuild erstellt wird, das Pakete nicht automatisch wiederherstellt.

Führen Sie in diesem Fall zuerst msbuild -t:restore und dann msbuild aus, oder verwenden Sie dotnet build, wodurch Pakete automatisch wiederhergestellt werden. Sie können auch jede der Methoden zur Paketwiederherstellung im vorherigen Abschnitt verwenden.

Vollständige Fehlermeldung:

One or more NuGet packages need to be restored but couldn't be because consent has
not been granted. To give consent, open the Visual Studio Options dialog, click on
the NuGet Package Manager node and check 'Allow NuGet to download missing packages
during build.' You can also give consent by setting the environment variable
'EnableNuGetPackageRestore' to 'true'. Missing packages: {name}

Dieser Fehler entsteht, wenn die Paketwiederherstellung in Ihrer NuGet-Konfiguration deaktiviert ist.

Sie können wie im Abschnitt Schnelle Lösung für Visual Studio-Benutzer beschrieben zutreffende Einstellungen in Visual Studio ändern.

Sie können diese Einstellungen direkt in der jeweiligen nuget.config-Datei bearbeiten (in der Regel %AppData%\NuGet\NuGet.Config unter Windows und ~/.nuget/NuGet/NuGet.Config unter Mac/Linux). Vergewissern Sie sich, dass die Schlüssel enabled und automatic unter packageRestore auf TRUE festgelegt sind:

<!-- Package restore is enabled -->
<configuration>
    <packageRestore>
        <add key="enabled" value="True" />
        <add key="automatic" value="True" />
    </packageRestore>
</configuration>

Wichtig

Sie müssen Visual Studio neu starten, wenn Sie die packageRestore-Einstellungen direkt in nuget.config bearbeiten, damit in dem Dialogfeld „Optionen“ die richtigen Werte angezeigt werden.

Andere mögliche Probleme

  • Es kann aufgrund von fehlenden Dateien zu Buildfehlern kommen, bei denen eine Meldung ausgegeben wird, in der Sie darüber informiert werden, dass Sie eine NuGet-Wiederherstellung ausführen müssen, um diese Dateien herunterzuladen. Beim Ausführen einer Wiederherstellung wird jedoch möglicherweise folgende Meldung angezeigt: „Alle Pakete sind bereits installiert. Nichts muss wiederhergestellt werden.“ Löschen Sie in diesem Fall den Ordner packages (bei Verwendung von packages.config) bzw. die Datei obj/project.assets.json (bei Verwendung von PackageReference), und führen Sie die Wiederherstellung erneut aus. Wenn der Fehler weiterhin besteht, geben Sie über die Befehlszeile nuget locals all -clear oder dotnet nuget locals all --clear ein, um den Ordner global-packages und den Cacheordner zu löschen, wie unter Verwalten der globalen Paketordner und Cacheordner beschrieben.

  • Wenn Sie ein Projekt über die Quellcodeverwaltung erhalten haben, kann es sein, dass Ihre Projektordner schreibgeschützt sind. Ändern Sie in diesem Fall die Ordnerberechtigungen, und versuchen Sie erneut, die Pakete wiederherzustellen.

  • Möglicherweise verwenden Sie eine ältere Version von NuGet. Unter nuget.org/downloads finden Sie die aktuellen empfohlenen Versionen. Für Visual Studio 2015 wird Version 3.6.0 empfohlen.

Wenn Sie auf ein anderes Problem stoßen, melden Sie dieses auf GitHub, damit wir Informationen zu diesem Problem sammeln können.