Schnellstart: Erstellen und Veröffentlichen eines Pakets mithilfe von Visual Studio (.NET Framework, Windows)

Mit Microsoft Visual Studio können Sie ein NuGet-Paket aus einer .NET Framework-Klassenbibliothek erstellen und dann mit dem NuGet CLI-Tool in nuget.org veröffentlichen.

Die Schnellstartanleitung richtet sich nur an Windows Benutzer. Wenn Sie Visual Studio für Mac verwenden, lesen Sie stattdessen dotnet CLI Tools.

Voraussetzungen

  • Installieren Sie Visual Studio 2022 für Windows mit jeder .NET-bezogenen Arbeitsauslastung.

    Sie können die 2022 Community Edition kostenlos von visualstudio.microsoft.com installieren oder die Professional- oder Enterprise-Edition verwenden.

    Visual Studio 2017 und höher umfasst automatisch NuGet-Funktionen, wenn eine .NET Workload installiert wird.

  • Registrieren Sie sich für ein kostenloses Konto auf nuget.org , wenn Sie noch kein Konto haben. Sie müssen das Konto registrieren und bestätigen, bevor Sie ein NuGet-Paket hochladen können.

  • Installieren Sie die NuGet CLI, indem Sie sie von nuget.org herunterladen. Fügen Sie die nuget.exe Datei zu einem geeigneten Ordner hinzu, und fügen Sie diesen Ordner ihrer PATH-Umgebungsvariable hinzu.

Erstellen eines Klassenbibliotheksprojekts

Führen Sie die folgenden Schritte aus, um ein Klassenbibliotheksprojekt zu erstellen:

  1. Klicken Sie in Visual Studio auf Datei>Neu>Projekt.

  2. Wählen Sie im Fenster Ein neues Projekt erstellenC#, Windows und Library in den Dropdownlisten aus.

  3. Wählen Sie in der resultierenden Liste der Projektvorlagen Class Library (.NET Framework) und dann Next aus.

  4. Geben Sie im Konfigurieren Sie Ihr neues Projekt-Fenster AppLogger als Projektnamen ein und wählen Sie dann Erstellen aus.

  5. Um sicherzustellen, dass das Projekt ordnungsgemäß erstellt wurde, wählen Sie "Lösung erstellen"> aus. Die DLL befindet sich im Debugordner (oder Release, wenn Sie stattdessen diese Konfiguration erstellen).

  6. (Optional) Für diese Schnellstartanleitung müssen Sie keinen zusätzlichen Code für das NuGet-Paket schreiben, da die Vorlagenklassenbibliothek zum Erstellen eines Pakets ausreicht. Wenn Sie jedoch einen funktionalen Code für dieses Beispielpaket wünschen, schließen Sie den folgenden Code ein:

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

    In einem echten NuGet-Paket implementieren Sie wahrscheinlich viele nützliche Features, mit denen andere Anwendungen erstellen können. Sie können auch die Zielframeworks festlegen. Ein Beispiel finden Sie unter UWP.

Konfigurieren von Projekteigenschaften für das Paket

Ein NuGet-Paket enthält ein Manifest (eine .nuspec Datei), das relevante Metadaten wie den Paketbezeichner, die Versionsnummer, die Beschreibung und vieles mehr enthält. Einige dieser Metadaten können direkt aus den Projekteigenschaften gezeichnet werden, was verhindert, dass sie sowohl im Projekt als auch im Manifest separat aktualisiert werden müssen. In den folgenden Schritten wird beschrieben, wie die entsprechenden Eigenschaften festgelegt werden:

  1. Wählen Sie Project > Eigenschaften und dann die Registerkarte Application aus.

  2. Geben Sie ihrem Paket für den Assemblynamen einen eindeutigen Bezeichner. Wenn Sie versuchen, ein Paket mit einem bereits vorhandenen Namen zu veröffentlichen, wird ein Fehler angezeigt.

    Important

    Sie müssen dem Paket einen Bezeichner zuweisen, der für nuget.org oder den host, den Sie verwenden, eindeutig ist. Andernfalls, tritt ein Fehler auf. Für diese Schnellstartanleitung wird empfohlen , "Beispiel " oder " Test " in den Namen zu einschließen, da der Veröffentlichungsschritt das Paket öffentlich sichtbar macht.

  3. Wählen Sie Assemblyinformationen aus, in dem ein Dialogfeld angezeigt wird, in das Sie andere Eigenschaften eingeben können, die in das Manifest übertragen werden (siehe Ersetzungstoken). Die am häufigsten verwendeten Felder sind Titel, Beschreibung, Firma, Copyright und Assemblyversion. Da diese Eigenschaften nach der Veröffentlichung mit Ihrem Paket auf einem Host wie nuget.org angezeigt werden, stellen Sie sicher, dass sie vollständig beschreibend sind.

    Screenshot mit der Seite

  4. (Optional) Um die Eigenschaften direkt anzuzeigen und zu bearbeiten, öffnen Sie die Datei Properties/AssemblyInfo.cs in der project, indem Sie Project>Edit Project Datei auswählen.

  5. Nachdem Sie diese Eigenschaften festgelegt haben, legen Sie die Konfiguration der Aktiven Lösung in Build>Configuration Manager auf Release fest, und erstellen Sie das Projekt neu, um die aktualisierte DLL zu generieren.

Generieren des anfänglichen Manifests

Nachdem Sie die Projekteigenschaften festgelegt und die DLL erstellt haben, können Sie nun eine anfängliche NUSPEC-Datei aus dem Projekt generieren. Dieser Schritt enthält die relevanten Ersetzungstoken, um Informationen aus der Projektdatei zu zeichnen.

Führen Sie nur einmal aus nuget spec , um das anfängliche Manifest zu generieren. Wenn Sie das Paket aktualisieren, ändern Sie entweder Werte in Ihrem Projekt, oder bearbeiten Sie das Manifest direkt:

  1. Öffnen Sie bei geöffnetem Projekt in Solution Explorer eine Eingabeaufforderung, indem Sie Tools>Befehlszeile>Developer-Eingabeaufforderung auswählen.

    Die Eingabeaufforderung wird in Ihrem Projektverzeichnis geöffnet, in dem sich die AppLogger.csproj Datei befindet.

  2. Führen Sie den folgenden Befehl aus: nuget spec AppLogger.csproj.

    NuGet erstellt ein Manifest, das dem Namen des Projekts entspricht, in diesem Fall AppLogger.nuspec. Es enthält auch Ersetzungs-Token im Manifest.

  3. Öffnen Sie AppLogger.nuspec in einem Text-Editor, um den Inhalt zu untersuchen, der dem folgenden Code ähnelt:

    <?xml version="1.0"?>
    <package >
      <metadata>
        <id>Package</id>
        <version>1.0.0</version>
        <authors>Your username</authors>
        <owners>Your username</owners>
        <license type="expression">MIT</license>
        <!-- <icon>icon.png</icon> -->
        <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>Package description</description>
        <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
        <copyright>Copyright 2022</copyright>
        <tags>Tag1 Tag2</tags>
      </metadata>
    </package>
    

Bearbeiten des Manifests

  1. Bearbeiten Sie die folgenden Eigenschaften, bevor Sie fortfahren. Andernfalls tritt ein Fehler auf, wenn Sie versuchen, ein NuGet-Paket mit den Standardwerten in Der .nuspec Datei zu erstellen. Informationen zu diesen Eigenschaften finden Sie unter optionalen Metadatenelementen:

    • Lizenz-URL
    • Projekt-URL
    • Versionshinweise
    • Schlagwörter
  2. Bei Paketen, die für den öffentlichen Gebrauch erstellt wurden, achten Sie besonders auf die Tags-Eigenschaft , da Tags anderen helfen, Ihr Paket zu finden und zu verstehen, was es tut.

  3. Sie können dem Manifest zurzeit auch alle anderen Elemente hinzufügen, wie in der NUSPEC-Dateireferenz beschrieben.

  4. Speichern Sie die Datei, bevor Sie fortfahren.

Ausführen des Paketbefehls

  1. Öffnen Sie bei geöffnetem Projekt in Solution Explorer eine Eingabeaufforderung, indem Sie Tools>Befehlszeile>Developer-Eingabeaufforderung auswählen.

    Die Eingabeaufforderung wird in Ihrem Projektverzeichnis geöffnet.

  2. Führen Sie den folgenden Befehl aus: nuget pack.

    NuGet generiert eine nupkg-Datei in Form von identifier.version.nupkg im aktuellen Ordner.

Veröffentlichen des Pakets

Nachdem Sie eine nupkg-Datei erstellt haben, veröffentlichen Sie sie in nuget.org, indem Sie die NuGet CLI mit einem API-Schlüssel verwenden, der von nuget.org abgerufen wurde. Für nuget.org müssen Sie 4.1.0 oder höher verwenden nuget.exe .

Wenn Sie Ihr Paket testen und überprüfen möchten, bevor Sie es in einem öffentlichen Katalog veröffentlichen, können Sie es in eine Testumgebung wie int.nugettest.org statt in nuget.org hochladen. Beachten Sie, dass pakete, die in int.nugettest.org hochgeladen wurden, möglicherweise nicht beibehalten werden.

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

Erhalten Sie 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 der NuGet CLI

Die Verwendung der NuGet CLI (nuget.exe) ist eine Alternative zur Verwendung der .NET CLI:

  1. Öffnen Sie eine Eingabeaufforderung, und ändern Sie den Ordner, der die NUPKG-Datei enthält.

  2. Führen Sie den folgenden Befehl aus: Ersetzen Sie <den Paketdateinamen> durch den Dateinamen Ihres Pakets, und ersetzen Sie <den API-Schlüsselwert> durch Ihren API-Schlüssel. Der Paketdateiname ist eine Verkettung Ihrer Paket-ID und Versionsnummer mit der Dateierweiterung .nupkg. Beispiel: AppLogger.1.0.0.nupkg:

    nuget push <package filename> <api key value> -Source https://api.nuget.org/v3/index.json
    

    Das Ergebnis des Veröffentlichungsprozesses wird wie folgt angezeigt:

    Pushing <package filename> 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.
    

Weitere Informationen finden Sie unter 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.

Nächste Schritte

Herzlichen Glückwunsch zum Erstellen eines NuGet-Pakets mithilfe des Visual Studio .NET Frameworks. Wechseln Sie zum nächsten Artikel, um zu erfahren, wie Sie ein NuGet-Paket mit der NuGet CLI erstellen.

Weitere Informationen, die NuGet zu bieten hat, finden Sie in den folgenden Artikeln: