Schnellstart: Erstellen und Veröffentlichen eines Pakets mithilfe von Visual Studio (.NET Framework, Windows)Quickstart: Create and publish a package using Visual Studio (.NET Framework, Windows)

Das Erstellen eines NuGet-Pakets aus einer .NET Framework-Klassenbibliothek umfasst das Erstellen der DLL in Visual Studio unter Windows, gefolgt von der Verwendung des Befehlszeilentools „nuget.exe“ zum Erstellen und Veröffentlichen des Pakets.Creating a NuGet package from a .NET Framework Class Library involves creating the DLL in Visual Studio on Windows, then using the nuget.exe command line tool to create and publish the package.

Hinweis

Dieser Schnellstart gilt ausschließlich für Visual Studio 2017 und höher unter Windows.This Quickstart applies to Visual Studio 2017 and higher versions for Windows only. Visual Studio für Mac enthält nicht die hier beschriebenen Funktionen.Visual Studio for Mac does not include the capabilities described here. Verwenden Sie stattdessen die dotnet-CLI-Tools.Use the dotnet CLI tools instead.

Erforderliche KomponentenPrerequisites

  1. Installieren Sie über visualstudio.com eine beliebige Edition von Visual Studio 2017 oder höher mit einer beliebigen .NET-bezogenen Workload.Install any edition of Visual Studio 2017 or higher from visualstudio.com with any .NET-related workload. Visual Studio 2017 enthält automatisch NuGet-Funktionen, wenn eine .NET-Workload installiert ist.Visual Studio 2017 automatically includes NuGet capabilities when a .NET workload is installed.

  2. Installieren Sie die nuget.exe-CLI, indem Sie sie von nuget.org herunterladen, die .exe-Datei in einen geeigneten Ordner speichern und den Ordner der Umgebungsvariable PATH hinzufügen.Install the nuget.exe CLI by downloading it from nuget.org, saving that .exe file to a suitable folder, and adding that folder to your PATH environment variable.

  3. 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 Framework-Klassenbibliothek für den Code verwenden, den Sie packen möchten, oder wie folgt ein einfaches Projekt erstellen:You can use an existing .NET Framework Class Library project for the code you want to package, or create a simple one as follows:

  1. Klicken Sie in Visual Studio auf Datei > Neu > Projekt, wählen Sie den Knoten Visual C# und dann die Vorlage „Klassenbibliothek (.NET Framework)“ aus, nennen Sie das Projekt „AppLogger“, und klicken Sie dann auf OK.In Visual Studio, choose File > New > Project, select the Visual C# node, select the "Class Library (.NET Framework)" template, name the project AppLogger, and click OK.

  2. Klicken Sie mit der rechten Maustaste auf die resultierende Projektdatei, und wählen Sie Erstellen aus, um sicherzustellen, dass das Projekt ordnungsgemäß erstellt wurde.Right-click on the resulting project file and select Build to make sure the project was created properly. Die DLL befindet sich im Ordner „Debuggen“ (oder im Ordner „Release“, wenn Sie stattdessen diese Konfiguration erstellen).The DLL is found within the Debug folder (or Release if you build that configuration instead).

In einem echten NuGet-Paket implementieren Sie viele hilfreiche Features, mit denen andere Apps erstellen können.Within a real NuGet package, of course, you implement many useful features with which others can build applications. Sie können die Zielframeworks beliebig festlegen.You can also set the target frameworks however you like. Beispiele finden Sie in den Leitfäden zu UWP und Xamarin.For example, see the guides for UWP and Xamarin.

In dieser exemplarischen Vorgehensweise schreiben Sie jedoch keinen zusätzlichen Code, da eine Klassenbibliothek aus der Vorlage für die Erstellung eines Pakets ausreicht.For this walkthrough, however, you won't write any additional code because a class library from the template is sufficient to create a package. Wenn Sie noch immer Funktionscode für das Paket benötigen, verwenden Sie folgenden:Still, if you'd like some functional code for the package, use the following:

using System;

namespace AppLogger
{
    public class Logger
    {
        public void Log(string text)
        {
            Console.WriteLine(text);
        }
    }
}

Tipp

Sofern es keinen Grund dafür gibt, der dagegen spricht, ist .NET Standard das bevorzugte Ziel für NuGet-Pakete, da es die größte Kompatibilitätsreichweite für verarbeitende Projekte bietet.Unless you have a reason to choose otherwise, .NET Standard is the preferred target for NuGet packages, as it provides compatibility with the widest range of consuming projects. Informationen dazu finden Sie unter Erstellen und Veröffentlichen eines Pakets mithilfe von Visual Studio (.NET Standard).See Create and publish a package using Visual Studio (.NET Standard).

Konfigurieren der Projekteigenschaften für das PaketConfigure project properties for the package

Ein NuGet-Paket enthält ein Manifest (eine .nuspec-Datei), das relevante Metadaten enthält, z.B. den Paketbezeichner, die Versionsnummer, die Beschreibung, usw.A NuGet package contains a manifest (a .nuspec file), that contains relevant metadata such as the package identifier, version number, description, and more. Einige von diesen Metadaten können direkt aus den Projekteigenschaften entnommen werden, wodurch vermieden werden kann, dass diese im Projekt und im Manifest separat aktualisiert werden müssen.Some of these can be drawn from the project properties directly, which avoids having to separately update them in both the project and the manifest. Dieser Abschnitt beschreibt, wo die entsprechenden Eigenschaften festgelegt werden müssen.This section describes where to set the applicable properties.

  1. Wählen Sie den Menübefehl Projekt > Eigenschaften und dann die Registerkarte Anwendung aus.Select the Project > Properties menu command, then select the Application tab.

  2. Legen Sie im Feld Assemblyname einen eindeutigen Bezeichner für Ihr Paket fest.In the Assembly name field, give your package a unique identifier.

    Wichtig

    Sie müssen dem Paket einen Bezeichner zuweisen, der auf nuget.org bzw. auf dem Host, den Sie verwenden, einzigartig ist.You must 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).

    Bei dem Versuch, ein Paket mit einem Namen zu veröffentlichen, der bereits vorhanden ist, wird Ihnen ein Fehler angezeigt.If you attempt to publish a package with a name that already exists, you see an error.

  3. Klicken Sie auf die Schaltfläche Assemblyinformationen, wodurch ein Dialogfeld geöffnet wird, in dem Sie weitere Eigenschaften eingeben können, die dann im Manifest übernommen werden (siehe .nuspec file reference - replacement tokens (NUSPEC-Referenz: Ersetzungstoken)).Select the Assembly Information... button, which brings up a dialog box in which you can enter other properties that carry into the manifest (see .nuspec file reference - replacement tokens). Die am häufigsten verwendeten Felder sind Titel, Beschreibung, Unternehmen, Copyright und Assemblyversion.The most commonly used fields are Title, Description, Company, Copyright, and Assembly version. Diese Eigenschaften werden letztlich mit Ihrem Paket auf einem Host wie nuget.org angezeigt, weshalb Sie sich vergewissern sollten, dass diese ausführlich beschrieben sind.These properties ultimately appear with your package on a host like nuget.org, so make sure they're fully descriptive.

    Assemblyinformationen in einem .NET Framework-Projekt in Visual Studio

  4. Optional: Öffnen Sie zum direkten Anzeigen und Bearbeiten der Eigenschaften die Datei Properties/AssemblyInfo.cs im Projekt.Optional: to see and edit the properties directly, open the Properties/AssemblyInfo.cs file in the project.

  5. Wenn die Eigenschaften festgelegt sind, legen Sie die Projektkonfiguration auf Release fest, und erstellen Sie das Projekt neu, um die aktualisierte DLL zu generieren.When the properties are set, set the project configuration to Release and rebuild the project to generate the updated DLL.

Erstellen des ersten ManifestsGenerate the initial manifest

Mit einer DLL und den festgelegten Projekteigenschaften können Sie nun den Befehl nuget spec verwenden, um eine .nuspec-Startdatei aus dem Projekt zu erstellen.With a DLL in hand and project properties set, you now use the nuget spec command to generate an initial .nuspec file from the project. Dieser Schritt umfasst die relevanten Ersetzungstoken zum Auslesen von Informationen aus der Projektdatei.This step includes the relevant replacement tokens to draw information from the project file.

Führen Sie nuget spec nur einmal aus, um das Startmanifest zu generieren.You run nuget spec only once to generate the initial manifest. Beim Aktualisieren des Pakets ändern Sie die Werte in Ihrem Projekt, oder Sie bearbeiten das Manifest direkt.When updating the package, you either change values in your project or edit the manifest directly.

  1. Öffnen Sie eine Eingabeaufforderung, und navigieren Sie zum Projektordner, der die Datei AppLogger.csproj enthält.Open a command prompt and navigate to the project folder containing AppLogger.csproj file.

  2. Führen Sie den folgenden Befehl aus: nuget spec AppLogger.csprojRun the following command: nuget spec AppLogger.csproj. Durch das Angeben eines Projekts erstellt NuGet ein Manifest, das dem Namen des Projekts entspricht, in diesem Fall AppLogger.nuspec.By specifying a project, NuGet creates a manifest that matches the name of the project, in this case AppLogger.nuspec. Ebenfalls werden die Ersetzungstoken im Manifest eingeschlossen.It also include replacement tokens in the manifest.

  3. Öffnen Sie AppLogger.nuspec in einem Text-Editor, um die Inhalte zu überprüfen, die wie folgt angezeigt werden sollten:Open AppLogger.nuspec in a text editor to examine its contents, which should appear as follows:

    <?xml version="1.0"?>
    <package >
      <metadata>
        <id>Package</id>
        <version>1.0.0</version>
        <authors>YourUsername</authors>
        <owners>YourUsername</owners>
        <license type="expression">MIT</license>
        <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
        <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>Package description</description>
        <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
        <copyright>Copyright 2019</copyright>
        <tags>Tag1 Tag2</tags>
      </metadata>
    </package>
    

Bearbeiten des ManifestsEdit the manifest

  1. NuGet löst einen Fehler aus, wenn Sie versuchen, ein Paket mit Standardwerten in Ihrer .nuspec-Datei zu erstellen. Bevor Sie fortfahren können, müssen Sie deshalb die folgenden Felder bearbeiten.NuGet produces an error if you try to create a package with default values in your .nuspec file, so you must edit the following fields before proceeding. Eine Beschreibung dazu, wie diese verwendet werden, finden Sie unter .nuspec file reference - optional metadata elements (NUSPEC-Referenz: Optionale Metadatenelemente).See .nuspec file reference - optional metadata elements for a description of how these are used.

    • licenseUrllicenseUrl
    • projectUrlprojectUrl
    • iconUrliconUrl
    • releaseNotesreleaseNotes
    • Tagstags
  2. Bei Paketen für die öffentliche Nutzung sollten Sie besonders auf die Tags-Eigenschaft achten, da Tags anderen dabei helfen, Ihr Paket auf Quellen wie nuget.org zu finden und dessen Funktion zu verstehen.For packages built for public consumption, pay special attention to the Tags property, as tags help others find your package on sources like nuget.org and understand what it does.

  3. Zu diesem Zeitpunkt können Sie auch weitere Elemente zu Ihrem Manifest hinzufügen, wie unter .nuspec file reference (NUSPEC-Referenz) beschrieben wird.You can also add any other elements to the manifest at this time, as described on .nuspec file reference.

  4. Speichern Sie die Datei, bevor Sie fortfahren.Save the file before proceeding.

Ausführen des Befehls packRun the pack command

  1. Führen Sie den Befehl nuget pack über eine Eingabeaufforderung im Ordner mit Ihrer .nuspec-Datei aus.From a command prompt in the folder containing your .nuspec file, run the command nuget pack.

  2. NuGet generiert im aktuellen Ordner eine .nupkg-Datei in Form von identifier-version.nupkg.NuGet generates a .nupkg file in the form of identifier-version.nupkg, which you'll find in the current folder.

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 nuget.exe auf nuget.org veröffentlichen. Für nuget.org benötigen Sie nuget.exe 4.1.0 oder höher.Once you have a .nupkg file, you publish it to nuget.org using nuget.exe with an API key acquired from nuget.org. For nuget.org you must use nuget.exe 4.1.0 or higher.

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.

    Weitere Informationen zum Erstellen Ihres Kontos finden Sie unter Individuelle Konten.For more information on creating your account, see Individual accounts.

  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 für Globmuster ein Sternchen (*) ein, und wählen Sie dann Erstellen aus.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 den 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 unter bereichsbezogene API-Schlüssel.For more information, see scoped API keys.

Veröffentlichen mit dem Befehl „nuget push“Publish with nuget push

  1. Öffnen Sie eine Befehlszeile, und navigieren Sie zu dem Ordner, der die .nupkg-Datei enthält.Open a command line and 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:

    nuget push AppLogger.1.0.0.nupkg qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -Source https://api.nuget.org/v3/index.json
    
  3. In „NuGet.exe“ werden die Ergebnisse des Veröffentlichungsvorgangs angezeigt:nuget.exe displays the results of the publishing process:

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

Siehe nuget push-Befehl.See 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

Nächste SchritteNext steps

Herzlichen Glückwunsch zur Erstellung Ihres ersten NuGet-Pakets!Congratulations on creating your first NuGet package!

Klicken Sie für weitere Informationen zu den Features von NuGet auf folgende Links.To explore more that NuGet has to offer, select the links below.