Schnellstart: Erstellen und Veröffentlichen eines Pakets mit der dotnet CLI

In dieser Schnellstartanleitung erfahren Sie, wie Sie schnell ein NuGet-Paket aus einer .NET Klassenbibliothek erstellen und mithilfe der .NET Befehlszeilenschnittstelle oder dotnet CLI in nuget.org veröffentlichen.

Voraussetzungen

  • Das .NET SDK, das das Dotnet-Befehlszeilentool bereitstellt. Ab Visual Studio 2017 wird die dotnet CLI automatisch mit allen .NET oder .NET Core-bezogenen Workloads installiert.

  • Ein kostenloses Konto auf nuget.org. Folgen Sie den Anweisungen unter "Neues individuelles Konto hinzufügen".

Erstellen eines Klassenbibliotheksprojekts

Sie können ein vorhandenes .NET Klassenbibliotheksprojekt für den Code verwenden, den Sie packen möchten, oder ein einfaches Projekt wie folgt erstellen:

  1. Erstellen Sie einen Ordner mit dem Namen "AppLogger".
  2. Öffnen Sie eine Eingabeaufforderung, und wechseln Sie zum Ordner "AppLogger ". Alle dotnet CLI-Befehle in dieser Schnellstartanleitung werden standardmäßig im aktuellen Ordner ausgeführt.
  3. Geben Sie dotnet new classlibein, das ein Projekt mit dem aktuellen Ordnernamen erstellt.

Weitere Informationen finden Sie unter dotnet new.

Hinzufügen von Paketmetadaten zur Projektdatei

Jedes NuGet-Paket verfügt über ein Manifest, das den Inhalt und die Abhängigkeiten des Pakets beschreibt. Im endgültigen Paket ist das Manifest eine NUSPEC-Datei , die die NuGet-Metadateneigenschaften verwendet, die Sie in die Projektdatei einschließen.

Öffnen Sie die .csproj-, FSPROJ- oder VBPROJ-Projektdatei , und fügen Sie die folgenden Eigenschaften innerhalb des vorhandenen <PropertyGroup> Tags hinzu. Verwenden Sie eigene Werte für Name und Unternehmen, und ersetzen Sie den Paketbezeichner durch einen eindeutigen Wert.

<PackageId>Contoso.08.28.22.001.Test</PackageId>
<Version>1.0.0</Version>
<Authors>your_name</Authors>
<Company>your_company</Company>

Important

Der Paketbezeichner muss für nuget.org und andere Paketquellen eindeutig sein. Die Veröffentlichung macht das Paket öffentlich sichtbar. Wenn Sie also die Beispielbibliothek "AppLogger" oder eine andere Testbibliothek verwenden, verwenden Sie einen eindeutigen Namen, der einschließt Sample oder Test.

Sie können alle optionalen Eigenschaften hinzufügen, die in den NuGet-Metadateneigenschaften beschrieben werden.

Hinweis

Bei Softwarepaketen, die Sie für die öffentliche Nutzung erstellen, achten Sie besonders auf die PackageTags Eigenschaft. Tags helfen anderen, Ihr Paket zu finden und zu verstehen, was es tut.

Ausführen des Paketbefehls

Um ein NuGet-Paket oder eine nupkg-Datei aus dem Projekt zu erstellen, führen Sie den Dotnet Pack-Befehl aus, der auch das Projekt automatisch erstellt.

dotnet pack

Die Ausgabe zeigt den Pfad zur NUPKG-Datei an:

MSBuild version 17.3.0+92e077650 for .NET
  Determining projects to restore...
  Restored C:\Users\myname\source\repos\AppLogger\AppLogger.csproj (in 64 ms).
  AppLogger -> C:\Users\myname\source\repos\AppLogger\bin\Debug\net6.0\AppLogger.dll
  Successfully created package 'C:\Users\myname\source\repos\AppLogger\bin\Debug\Contoso.08.28.22.001.Test.1.0.0.nupkg'.

Paket beim Build automatisch generieren

Um dotnet pack automatisch auszuführen, wenn Sie dotnet build ausführen, fügen Sie die folgende Zeile in die Projektdatei innerhalb von <PropertyGroup> hinzu:

    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>

Veröffentlichen des Pakets

Veröffentlichen Sie Ihre nupkg-Datei in nuget.org mithilfe des Dotnet Nuget-Pushbefehls mit einem API-Schlüssel, den Sie von nuget.org erhalten.

Hinweis

  • Nuget.org überprüft alle hochgeladenen Pakete auf Viren und lehnt alle Pakete ab, die Viren enthalten. Nuget.org überprüft auch regelmäßig alle vorhandenen aufgelisteten Pakete.

  • Pakete, die Sie in nuget.org veröffentlichen, sind für andere Entwickler öffentlich sichtbar, es sei denn, Sie heben sie auf. Informationen zum privaten Hosten von Paketen finden Sie unter "Hosten Ihrer eigenen NuGet-Feeds".

Holen Sie sich Ihren API-Schlüssel

  1. Melden Sie sich bei Ihrem nuget.org-Konto an, oder erstellen Sie ein Konto , wenn Sie noch kein Konto haben.

  2. Wählen Sie in der oberen rechten Ecke Ihren Benutzernamen und dann API-Schlüssel aus.

  3. Wählen Sie "Erstellen" aus, und geben Sie dann einen Namen für Ihren Schlüssel ein.

  4. Unter "Bereich auswählen", wählen Sie die Option Push aus.

  5. Geben Sie unter "Pakete auswählen" für "Glob-Muster" ein Sternchen (*) ein.

  6. Wählen Sie "Erstellen" aus.

  7. Wählen Sie "Kopieren" aus, um den neuen Schlüssel zu kopieren.

    Screenshot einer nuget.org Seite mit dem neuen API-Schlüssel, einer Meldung zum Kopieren des Schlüssels jetzt und der Schaltfläche

Important

  • Bewahren Sie ihren API-Schlüssel immer als geheim auf. Der API-Schlüssel ist wie ein Kennwort, das jeder zum Verwalten von Paketen in Ihrem Auftrag verwenden kann. Löschen oder regenerieren Sie Ihren API-Schlüssel, wenn er versehentlich angezeigt wird.
  • Speichern Sie Ihren Schlüssel an einem sicheren Speicherort, da Sie den Schlüssel später nicht mehr kopieren können. Wenn Sie zur API-Schlüsselseite zurückkehren, müssen Sie den Schlüssel neu generieren, um ihn zu kopieren. Sie können den API-Schlüssel auch entfernen, wenn Sie keine Pushpakete mehr verschieben möchten.

Scoping bietet eine Möglichkeit zum Erstellen separater API-Schlüssel für unterschiedliche Zwecke. Jeder Schlüssel verfügt über einen Ablaufzeitrahmen, und Sie können den Schlüssel auf bestimmte Pakete oder Globmuster beschränken. Sie legen auch jeden Schlüssel auf bestimmte Vorgänge fest: Hochladen Sie neue Pakete und Paketversionen, hochladen Sie nur neue Paketversionen, oder nehmen Sie die Auflistung zurück.

Mithilfe der Bereichseinschränkung können Sie API-Schlüssel für verschiedene Personen erstellen, die Pakete für Ihre Organisation verwalten, sodass sie nur die erforderlichen Berechtigungen haben.

Weitere Informationen finden Sie unter "Bereichsbezogene API-Schlüssel".

Veröffentlichen mit dotnet nuget push

Führen Sie im Ordner, der die NUPKG-Datei enthält, den folgenden Befehl aus. Ersetzen Sie <package-file> durch den Namen Ihrer .nupkg-Datei und <API-key> durch Ihren API-Schlüssel.

dotnet nuget push <package-file> --api-key <API-key> --source https://api.nuget.org/v3/index.json

Die Ausgabe zeigt die Ergebnisse des Veröffentlichungsprozesses an:

Pushing <package-file> to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
  Created https://www.nuget.org/api/v2/package/ 2891ms
Your package was pushed.

Weitere Informationen finden Sie unter dotnet nuget push.

Fehler bei der Veröffentlichung

Wenn Sie den push Befehl ausführen, tritt manchmal ein Fehler auf. Beispielsweise erhalten Sie in den folgenden Situationen möglicherweise einen Fehler:

  • Ihr API-Schlüssel ist ungültig oder abgelaufen.
  • Sie versuchen, ein Paket zu veröffentlichen, das über einen Bezeichner verfügt, der bereits auf dem Host vorhanden ist.
  • Sie nehmen Änderungen an einem veröffentlichten Paket vor, vergessen jedoch, die Versionsnummer zu aktualisieren, bevor Sie versuchen, es erneut zu veröffentlichen.

Die Fehlermeldung gibt in der Regel die Quelle des Problems an.

Angenommen, der Bezeichner Contoso.App.Logger.Test ist für nuget.org vorhanden. Wenn Sie versuchen, ein Paket mit diesem Bezeichner zu veröffentlichen, wird die folgende Fehlermeldung angezeigt:

Response status code does not indicate success: 403 (The specified API key is invalid, has expired, or does not have permission to access the specified package.).

Um diese Situation zu beheben, überprüfen Sie den Bereich, das Ablaufdatum und den Wert Ihres API-Schlüssels. Wenn der Schlüssel gültig ist, gibt der Fehler an, dass der Paketbezeichner bereits auf dem Host vorhanden ist. Um das Problem zu umgehen, ändern Sie den Paketbezeichner so, dass er eindeutig ist, erstellen Sie das Projekt neu, erstellen Sie die nupkg-Datei erneut, und wiederholen Sie den push Befehl.

Verwalten des veröffentlichten Pakets

Wenn Ihr Paket erfolgreich veröffentlicht wurde, erhalten Sie eine Bestätigungs-E-Mail. Um das veröffentlichte Paket anzuzeigen, wechseln Sie zu nuget.org, wählen Sie ihren Benutzernamen in der oberen rechten Ecke aus, und wählen Sie dann " Pakete verwalten" aus.

Hinweis

Es kann eine Weile dauern, bis Ihr Paket indiziert und in Suchergebnissen angezeigt wird, wo andere es finden können. Während dieser Zeit wird Ihr Paket unter "Nicht aufgelistete Pakete" angezeigt, und auf der Paketseite wird die folgende Meldung angezeigt:

Screenshot einer nuget.org Warnmeldung, dass das Paket noch nicht veröffentlicht wurde. Der Text gibt an, dass die Überprüfung und Indizierung eine Stunde dauern kann.

Nachdem Ihr NuGet-Paket nun auf nuget.org veröffentlicht wurde, können andere Entwickler es in ihren Projekten verwenden.

Wenn Sie ein Paket erstellen, das nicht hilfreich ist (z. B. dieses Beispielpaket aus einer leeren Klassenbibliothek), oder wenn das Paket nicht sichtbar sein soll, können Sie die Liste des Pakets aufheben, um es aus den Suchergebnissen auszublenden:

  1. Nachdem das Paket auf der Seite "Pakete verwalten" unter "Veröffentlichte Pakete" angezeigt wird, wählen Sie das Stiftsymbol neben dem Paketeintrag aus.

    Screenshot der Seite nuget.org Pakete. Im Abschnitt

  2. Wählen Sie auf der nächsten Seite "Eintrag" aus, deaktivieren Sie das Kontrollkästchen "Liste in Suchergebnissen ", und wählen Sie dann " Speichern" aus.

    Screenshot einer nuget.org Seite. Im Eintragsabschnitt wird die Option zum Auflisten des Pakets in den Suchergebnissen hervorgehoben.

Das Paket wird jetzt unter "Nicht aufgelistete Pakete " in " Pakete verwalten " angezeigt und wird in den Suchergebnissen nicht mehr angezeigt.

Hinweis

Um zu vermeiden, dass Ihr Testpaket auf nuget.org live ist, können Sie es auf die Testseite von nuget.org hochladen. https://int.nugettest.org Beachten Sie, dass Pakete, die auf int.nugettest.org hochgeladen wurden, möglicherweise nicht beibehalten werden.

Herzlichen Glückwunsch zum Erstellen und Veröffentlichen Ihres ersten NuGet-Pakets!

Weitere NuGet-Videos finden Sie auf Channel 9 und YouTube.

Nächste Schritte

Weitere Informationen zum Erstellen von Paketen mit der dotnet CLI finden Sie unter:

Weitere Informationen zum Erstellen und Veröffentlichen von NuGet-Paketen: