Erstellen eines NuGet-Pakets mit der .NET-CLI
Hinweis
Nachfolgend einige Befehlszeilenbeispiele unter Unix. Der hier gezeigte Befehl dotnet pack
funktioniert wie unter Windows.
.NET Standard- und .NET Core-Bibliotheken sollten als NuGet-Pakete verteilt werden. So werden alle .NET Standardbibliotheken verteilt und genutzt. Am einfachsten geht dies mit dem Befehl dotnet pack
.
Stellen Sie sich vor, dass Sie eine fantastische neue Bibliothek geschrieben haben, die Sie über NuGet verteilen möchten. Sie können zu genau diesem Zweck ein NuGet-Paket mit plattformübergreifenden Tools erstellen! Als Beispiel dient eine Bibliothek namens SuperAwesomeLibrary für das Ziel netstandard1.0
.
Wenn Sie transitive Abhängigkeiten haben, also ein Projekt, das von einem anderen Paket abhängig ist, stellen Sie sicher, dass Sie Pakete für die gesamte Projektmappe mit dem Befehl dotnet restore
wiederherstellen, bevor Sie das NuGet-Paket erstellen. Andernfalls funktioniert der Befehl dotnet pack
nicht ordnungsgemäß.
Sie müssen dotnet restore
nicht ausführen, da der Befehl implizit von allen Befehlen ausgeführt wird, die eine Wiederherstellung erfordern. Zu diesen zählen z. B. dotnet new
, dotnet build
, dotnet run
, dotnet test
, dotnet publish
und dotnet pack
. Verwenden Sie die Option --no-restore
, um die implizite Wiederherstellung zu deaktivieren.
In bestimmten Fällen eignet sich der dotnet restore
-Befehl dennoch. Dies ist etwa bei Szenarios der Fall, in denen die explizite Wiederherstellung sinnvoll ist. Beispiele hierfür sind Continuous Integration-Builds in Azure DevOps Services oder Buildsysteme, die den Zeitpunkt für die Wiederherstellung explizit steuern müssen.
Informationen zum Verwalten von NuGet-Feeds finden Sie in der dotnet restore
Dokumentation.
Nachdem Sie sichergestellt haben, dass Pakete wiederhergestellt wurden, können Sie zu dem Verzeichnis navigieren, in dem sich eine Bibliothek befindet:
cd src/SuperAwesomeLibrary
Anschließend genügt ein einzelner Befehl von der Befehlszeile:
dotnet pack
Der Ordner /bin/debug sieht nun wie folgt aus:
$ ls bin/Debug
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg
Es wird ein Paket generiert, das debuggt werden kann. Wenn Sie ein NuGet-Paket mit Release-Binärdateien erstellen möchten, müssen Sie lediglich den Schalter --configuration
(oder) -c
und release
als Argument verwenden.
dotnet pack --configuration release
Ihr Ordner /bin weist nun einen Unterordner release mit dem NuGet-Paket und den Releasebinärdateien auf:
$ ls bin/release
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg
Jetzt haben Sie die erforderlichen Dateien zum Veröffentlichen eines NuGet-Pakets.
Verwechseln Sie nicht dotnet pack
mit dotnet publish
Es ist wichtig zu beachten, dass zu keinem Zeitpunkt der Befehl dotnet publish
beteiligt ist. Der Befehl dotnet publish
dient der Bereitstellung von Clientanwendungen mit allen Abhängigkeiten im gleichen Paket – nicht für das Generieren eines NuGet-Pakets, das über NuGet verteilt und genutzt wird.