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 restoreDokumentation.

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.

Weitere Informationen