Was geschieht beim Installieren eines NuGet-Pakets?
Die verschiedenen NuGet-Tools erstellen typischerweise einen Verweis auf ein Paket in der Projektdatei oder packages.config
und führen dann eine Paketwiederherstellung durch, die das Paket effektiv installiert. nuget install
ist die Ausnahme, bei der das Paket nur in einen packages
-Ordner erweitert wird, andere Dateien jedoch unverändert bleiben.
Der allgemeine Prozess ist wie folgt:
Der Paketbezeichner und die Paketversion werden in der Projektdatei oder
packages.config
aufgezeichnet (gilt für alle Tools mit Ausnahme vonnuget.exe
).Wenn als Installationstool Visual Studio oder die dotnet-CLI verwendet werden, wird zunächst versucht, das Paket zu installieren. Falls eine Inkompatibilität vorliegt, wird das Paket nicht zur Projektdatei oder zu
packages.config
hinzugefügt.Erhalten des Pakets:
Überprüfen Sie, ob das Paket (mit exaktem Bezeichner und Versionsnummer) bereits im Ordner global-packages installiert ist, wie unter Verwalten der globalen Paketordner und Cacheordner beschrieben.
Wenn sich das Paket nicht im Ordner global-packages befindet, versuchen Sie, es aus den in den Konfigurationsdateien aufgelisteten Quellen abzurufen. Konfigurationen mit Paketquellenzuordnung werden zu diesem Zeitpunkt angewendet. Bei Onlinequellen wird zunächst versucht, das Paket aus dem HTTP-Cache abzurufen, es sei denn,
-NoHttpCache
wird mitnuget.exe
-Befehlen oder--no-http-cache
mitdotnet restore
angegeben. (Visual Studio unddotnet add package
verwenden immer den Cache.) Wenn ein Paket aus dem Cache verwendet wird, wird "CACHE" in der Ausgabe angezeigt. Die Ablaufzeit des Caches beträgt 30 Minuten.Wenn das Paket mithilfe einer unverankerten Version angegeben wurde oder ohne Mindestversion, kontaktiert NuGet alle Quellen, um die beste Übereinstimmung zu finden. Beispiel:
1.*
,(, 2.0.0]
.Wenn sich das Paket nicht im HTTP-Cache befindet, wird versucht, es aus den in der Konfiguration aufgeführten Quellen herunterzuladen. Wird ein Paket heruntergeladen, erscheinen „GET“ und „OK“ in der Ausgabe. NuGet protokolliert den HTTP-Datenverkehr mit normaler Ausführlichkeit.
Wenn das Paket nicht erfolgreich aus einer Quelle bezogen werden kann, tritt bei der Installation an dieser Stelle ein Fehler auf, z.B. NU1103. Beachten Sie, dass Fehler von
nuget.exe
-Befehlen nur die zuletzt geprüfte Quelle anzeigen, aber implizieren, dass das Paket aus keiner Quelle abgerufen werden konnte.
Beim Beziehen des Pakets gilt möglicherweise die Reihenfolge der Quellen in der NuGet-Konfiguration:
- NuGet überprüft zuerst die lokalen Ordner und Netzwerkfreigaben der Quellen und dann erst HTTP-Quellen.
Speicherung einer Kopie des Pakets und anderer Informationen im Ordner http-cache, wie unter Verwalten der globalen Paketordner und Cacheordner beschrieben.
Wenn Sie das Paket heruntergeladen haben, installieren Sie es pro Benutzer im Ordner global-packages. NuGet erstellt einen Unterordner für jeden Paketbezeichner und erstellt dann Unterordner für jede installierte Version des Pakets.
NuGet installiert bei Bedarf Paketabhängigkeiten. Möglicherweise werden bei diesem Prozess Paketversionen im Prozess aktualisiert, wie in Abhängigkeitsauflösung beschrieben.
Aktualisieren Sie andere Projektdateien und -ordner:
- Bei Projekten, die PackageReference verwenden, aktualisieren Sie das in
obj/project.assets.json
gespeicherte Abhängigkeitsdiagramm für das Paket. Paketinhalte selbst werden nicht in einen Projektordner kopiert. - Aktualisieren Sie
app.config
und/oderweb.config
, wenn das Paket Transformationen von Quell- und Konfigurationsdateien verwendet.
- Bei Projekten, die PackageReference verwenden, aktualisieren Sie das in
(Nur Visual Studio) Zeigt die Infodatei des Pakets, falls vorhanden, in einem Visual Studio-Fenster.
Nutzen Sie NuGet-Pakete, um produktiv zu programmieren.