Schnellstart: Erstellen und Veröffentlichen eines Pakets (dotnet CLI)Quickstart: Create and publish a package (dotnet CLI)

Ein NuGet-Paket kann, mithilfe der dotnet-Befehlszeilenschnittstelle (CLI), problemlos über eine .NET-Klassenbibliothek erstellt und auf nuget.org veröffentlicht werden.It's a simple process to create a NuGet package from a .NET Class Library and publish it to nuget.org using the dotnet command-line interface (CLI).

Erforderliche KomponentenPrerequisites

  1. Installieren Sie das .NET Core SDK, das die dotnet-CLI enthält.Install the .NET Core SDK, which includes the dotnet CLI.

  2. Registrieren Sie sich für ein kostenloses Konto auf nuget.org, falls Sie noch kein Konto haben.Register for a free account on nuget.org if you don't have one already. Wenn Sie ein neues Konto erstellen, wird Ihnen eine Bestätigungs-E-Mail gesendet.Creating a new account sends a confirmation email. Sie müssen das Konto bestätigen, bevor Sie ein Paket hochladen können.You must confirm the account before you can upload a package.

Erstellen eines KlassenbibliotheksprojektsCreate a class library project

Sie können ein vorhandenes Projekt in der .NET-Klassenbibliothek für Code verwenden, den Sie packen wollen, oder ein einfaches Projekt wie folgt erstellen:You can use an existing .NET Class Library project for the code you want to package, or create a simple one as follows:

  1. Erstellen Sie einen Ordner namens AppLogger und öffnen diesen.Create a folder called AppLogger and change into it.

  2. Erstellen Sie das Projekt mit dem Befehl dotnet new classlib, der den Namen des aktuellen Ordners für das Projekt verwendet.Create the project using dotnet new classlib, which uses the name of the current folder for the project.

Hinzufügen von Paketmetadaten zu einer ProjektdateiAdd package metadata to the project file

Jedes NuGet-Paket benötigt ein Manifest, das die Inhalte und Abhängigkeiten des Pakets beschreibt.Every NuGet package needs a manifest that describes the package's contents and dependencies. In dem letzten Paket ist das Manifest eine .nuspec-Datei, die aus NuGet-Metadateneigenschaften erstellt wird, die Sie in der Projektdatei einbeziehen.In a final package, the manifest is a .nuspec file that is generated from the NuGet metadata properties that you include in the project file.

  1. Öffnen Sie Ihre Projektdatei (.csproj), und fügen Sie die folgenden mindestens erforderlichen Eigenschaften in das vorhandene <PropertyGroup>-Tag ein, und passen Sie die Werte entsprechend an:Open your project file (.csproj) and add the following minimal properties inside the existing <PropertyGroup> tag, changing the values as appropriate:

    <PackageId>AppLogger</PackageId>
    <Version>1.0.0</Version>
    <Authors>your_name</Authors>
    <Company>your_company</Company>
    

    Wichtig

    Weisen Sie dem Paket einen Bezeichner zu, der auf nuget.org bzw. auf dem Host, den Sie verwenden, einzigartig ist.Give the package an identifier that's unique across nuget.org or whatever host you're using. Für diese exemplarische Vorgehensweise wird empfohlen, im Namen „Sample“ oder „Test“ zu verwenden, da der Name in einem späteren Veröffentlichungsschritt öffentlich sichtbar gemacht wird (auch wenn es unwahrscheinlich ist, dass jemand versucht, es zu verwenden).For this walkthrough we recommend including "Sample" or "Test" in the name as the later publishing step does make the package publicly visible (though it's unlikely anyone will actually use it).

  2. Fügen Sie optionale Eigenschaften wie unter NuGet-Metadateneigenschaften beschrieben hinzu.Add any optional properties described on NuGet metadata properties.

    Hinweis

    Bei Paketen für die öffentliche Nutzung sollten Sie besonders auf die PackageTags-Eigenschaft achten, da Tags anderen dabei helfen, Ihr Paket zu finden und dessen Funktion zu verstehen.For packages built for public consumption, pay special attention to the PackageTags property, as tags help others find your package and understand what it does.

Ausführen des Befehls packRun the pack command

Um ein NuGet-Paket (eine .nupkg-Datei) aus dem Projekt zu erstellen, führen Sie den dotnet pack-Befehl aus, der auch das Projekt automatisch erstellt:To build a NuGet package (a .nupkg file) from the project, run the dotnet pack command, which also builds the project automatically:

# Uses the project file in the current folder by default
dotnet pack

Die Ausgabe zeigt den Pfad zu der .nupkg-Datei:The output shows the path to the .nupkg file:

Microsoft (R) Build Engine version 15.5.180.51428 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 29.91 ms for D:\proj\AppLoggerNet\AppLogger\AppLogger.csproj.
  AppLogger -> D:\proj\AppLoggerNet\AppLogger\bin\Debug\netstandard2.0\AppLogger.dll
  Successfully created package 'D:\proj\AppLoggerNet\AppLogger\bin\Debug\AppLogger.1.0.0.nupkg'.

Automatisches Generieren des Pakets bei der ErstellungAutomatically generate package on build

Um automatisch dotnet pack auszuführen, wenn Sie dotnet build ausführen, fügen Sie folgende Zeile zu Ihrer Projektdatei in <PropertyGroup> hinzu:To automatically run dotnet pack when you run dotnet build, add the following line to your project file within <PropertyGroup>:

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

Veröffentlichen des PaketsPublish the package

Sobald Sie eine .nupkg-Datei haben, können Sie diese, gemeinsam mit einem API-Schlüssel von nuget.org, über den Befehl dotnet nuget push auf nuget.org veröffentlichen.Once you have a .nupkg file, you publish it to nuget.org using the dotnet nuget push command along with an API key acquired from nuget.org.

Hinweis

Virenprüfung: Alle auf nuget.org hochgeladenen Pakete werden auf Viren überprüft und abgelehnt, falls Viren erkannt werden.Virus scanning: All packages uploaded to nuget.org are scanned for viruses and rejected if any viruses are found. Alle auf nuget.org aufgelisteten Pakete werden zudem regelmäßig überprüft.All packages listed on nuget.org are also scanned periodically.

Pakete, die auf nuget.org veröffentlicht werden, sind für andere Entwickler sichtbar, sofern Sie deren Auflistung nicht aufheben.Packages published to nuget.org are also publicly visible to other developers unless you unlist them. Informationen zum privaten Hosten von Paketen finden Sie unter Hosting packages (Hosten von Paketen).To host packages privately, see Hosting packages.

Erwerben des API-SchlüsselsAcquire your API key

  1. Melden Sie sich bei Ihrem nuget.org-Konto an, oder erstellen Sie ein Konto, wenn Sie noch keines besitzen.Sign into your nuget.org account or create an account if you don't have one already.

  2. Klicken Sie auf Ihren Benutzernamen (oben rechts) und anschließend auf API Keys (API-Schlüssel).Select your user name (on the upper right), then select API Keys.

  3. Wählen Sie Erstellen, geben Sie einen Namen für den Schlüssel ein, und wählen Sie Bereiche auswählen > Push.Select Create, provide a name for your key, select Select Scopes > Push. Geben Sie unter API-Schlüssel für Globmuster ein Sternchen (*) ein, und wählen Sie dann Erstellen.Under API Key, enter * for Glob pattern, then select Create. (Weitere Informationen zu Bereichen finden Sie unten.)(See below for more about scopes.)

  4. Nachdem der Schlüssel erstellt wurde, klicken Sie auf Copy (Kopieren), um den Zugriffsschlüssel abzurufen, den Sie in der CLI benötigen:Once the key is created, select Copy to retrieve the access key you need in the CLI:

    Kopieren des API-Schlüssels in die Zwischenablage

  5. Wichtig: Speichern Sie Ihren Schlüssel an einem sicheren Ort, Sie können den Schlüssel später nicht erneut kopieren.Important: Save your key in a secure location because you cannot copy the key again later on. Wenn Sie auf die Seite „API-Schlüssel“ zurückkehren, müssen Sie den Schlüssel erneut generieren, um ihn zu kopieren.If you return to the API key page, you need to regenerate the key to copy it. Sie können den API-Schlüssel auch entfernen, wenn sie keine Pakete mehr mithilfe von Push über die CLI übertragen möchten.You can also remove the API key if you no longer want to push packages via the CLI.

Mit der Bereichsauswahl können Sie separate API-Schlüssel für verschiedene Zwecke erstellen.Scoping allows you to create separate API keys for different purposes. Jeder Schlüssel hat seinen Ablaufzeitraum und kann auf bestimmte Pakete (oder Globmuster) festgelegt werden.Each key has its expiration timeframe and can be scoped to specific packages (or glob patterns). Jeder Schlüssel ist zudem auf bestimmte Vorgänge begrenzt: Push von neuen Paketen und Updates, Push von ausschließlich Updates oder Entfernen aus Listing.Each key is also scoped to specific operations: push of new packages and updates, push of updates only, or delisting. Durch das Festlegen des Gültigkeitsbereichs können Sie API-Schlüssel für verschiedene Personen erstellen, die Pakete für Ihre Organisation so verwalten, dass sie nur über die erforderlichen Berechtigungen verfügen.Through scoping, you can create API keys for different people who manage packages for your organization such that they have only the permissions they need. Weitere Informationen finden Sie in der Einführung in API-Schlüssel mit begrenztem Gültigkeitsbereich (blogs.nuget.org).For more information, see Introducing scoped API keys (blogs.nuget.org).

Veröffentlichen mit „dotnet nuget push“Publish with dotnet nuget push

  1. Navigieren Sie zum Ordner, der die .nupkg-Datei enthält.Change to the folder containing the .nupkg file.

  2. Führen Sie den folgenden Befehl aus, geben Sie dabei Ihren Paketnamen an, und ersetzen Sie den Schlüsselwert durch Ihren API-Schlüssel:Run the following command, specifying your package name and replacing the key value with your API key:

    dotnet nuget push AppLogger.1.0.0.nupkg -k qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json
    
  3. „dotnet“ zeigt die Ergebnisse des Veröffentlichungsvorgangs an:dotnet displays the results of the publishing process:

    info : Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
    info :   PUT https://www.nuget.org/api/v2/package/
    info :   Created https://www.nuget.org/api/v2/package/ 12620ms
    info : Your package was pushed.
    

Siehe dotnet nuget push.See dotnet nuget push.

VeröffentlichungsfehlerPublish errors

Fehler des Befehls push geben das Problem in der Regel an.Errors from the push command typically indicate the problem. Beispielsweise könnte das Problem darin liegen, dass Sie vergessen haben, die Versionsnummer in ihrem Projekt anzupassen, und Sie versuchen ein Paket zu veröffentlichen, das bereits vorhanden ist.For example, you may have forgotten to update the version number in your project and are therefore trying to publish a package that already exists.

Es werden Ihnen auch Fehler angezeigt, wenn Sie versuchen, ein Paket zu veröffentlichen, das einen Bezeichner verwendet, der bereits auf dem Host vorhanden ist.You also see errors when trying to publish a package using an identifier that already exists on the host. Zum Beispiel ist der Name „AppLogger“ bereits vorhanden.The name "AppLogger", for example, already exists. In diesem Fall gibt der push-Befehl folgende Fehlermeldung aus:In such a case, the push command gives the following error:

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

Wenn Sie einen gültigen API-Schlüssel verwenden, den Sie eben erst erstellt haben, wird in dieser Nachricht ein Namenskonflikt angegeben, der durch den Abschnitt „permission“ dieser Fehlermeldung nicht ganz klar wird.If you're using a valid API key that you just created, then this message indicates a naming conflict, which isn't entirely clear from the "permission" part of the error. Ändern Sie den Paketbezeichner, erstellen Sie das Projekt neu, erstellen Sie die Datei .nupkg neu, und versuchen Sie den push-Befehl erneut.Change the package identifier, rebuild the project, recreate the .nupkg file, and retry the push command.

Verwalten des veröffentlichten PaketsManage the published package

Wählen Sie in Ihrem Profil auf nuget.org Pakete verwalten aus, um das gerade veröffentlichte Paket anzuzeigen.From your profile on nuget.org, select Manage Packages to see the one you just published. Sie erhalten auch eine Bestätigungs-E-Mail.You also receive a confirmation email. Beachten Sie, dass es möglicherweise etwas dauert, bis Ihr Paket indiziert wurde und anderen Benutzern in den Suchergebnissen angezeigt wird.Note that it might take a while for your package to be indexed and appear in search results where others can find it. In diesem Zeitraum wird auf Ihrer Paketseite folgende Nachricht angezeigt:During that time your package page shows the message below:

Dieses Paket wurde noch nicht indiziert.

Und das ist schon alles!And that's it! Sie haben gerade Ihr erstes NuGet-Paket auf nuget.org veröffentlicht, das andere Entwickler nun in ihren eigenen Projekten verwenden können.You've just published your first NuGet package to nuget.org that other developers can use in their own projects.

Wenn Sie in dieser exemplarischen Vorgehensweise ein Paket erstellt haben, das keinen tatsächlichen Nutzen erfüllt (z.B. ein Paket mit einer leeren Klassenbibliothek), sollten Sie das Paket wie folgt aus der Liste entfernen:If in this walkthrough you created a package that isn't actually useful (such as a package created with an empty class library), you should unlist the package to hide it from search results:

  1. Klicken Sie auf nuget.org auf Ihren Benutzernamen (oben rechts auf der Seite), und klicken Sie dann auf Manage Packages (Pakete verwalten).On nuget.org, select your user name (upper right of the page), then select Manage Packages.

  2. Suchen Sie das Paket, das Sie aus der Liste entfernen wollen, unter Published (Veröffentlicht), und klicken Sie auf das Papierkorbsymbol auf der rechten Seite:Locate the package you want to unlist under Published and select the trash can icon on the right:

    Papierkorbsymbol neben der Paketliste auf nuget.org

  3. Deaktivieren Sie auf der nachfolgenden Seite das Kontrollkästchen List (package-name) in search results ((Paketname) in Suchergebnissen auflisten), und klicken Sie auf Save (Speichern):On the subsequent page, clear the box labeled List (package-name) in search results and select Save:

    Deaktivieren des Kontrollkästchens für die Auflistung eines Pakets auf nuget.org