Veröffentlichen von NuGet-Paketen

Nachdem Sie ein NuGet-Paket erstellt haben und über eine NUPKG-Datei verfügen, können Sie das Paket anderen Entwicklern öffentlich oder privat zur Verfügung stellen. In diesem Artikel wird beschrieben, wie Sie öffentliche Pakete global über nuget.org freigeben.

Sie können auch private Pakete nur einem Team oder einer Organisation zur Verfügung stellen, indem Sie sie auf einer Dateifreigabe, einem privaten NuGet-Server oder einem Repository eines Drittanbieters wie myget, ProGet, Nexus Repository oder Artifactory hosten. Weitere Informationen finden Sie unter Hosten eigener NuGet-Feeds. Informationen zum Veröffentlichen mit Azure Artifacts finden Sie unter Veröffentlichen von Paketen in NuGet.org.

Veröffentlichen auf nuget.org

Melden Sie sich zum Veröffentlichen auf nuget.org mit einem Microsoft-Konto bei nuget.org an, und erstellen Sie damit ein kostenloses nuget.org-Konto. Befolgen Sie die Anweisungen unter Hinzufügen eines neuen individuellen Kontos.

Screenshot des NuGet-Anmeldelinks

Sobald Sie über ein Konto verfügen, können Sie ein Paket in nuget.org veröffentlichen, indem Sie das nuget.org-Webportal, die dotnet CLI oder die NuGet CLI Version 4.1.0 oder höher verwenden. Sie können Pakete auch über Azure Pipelines veröffentlichen.

Hochladen in das nuget.org-Webportal

So laden Sie ein Paket auf die nuget.org-Website hoch:

  1. Wählen Sie im oberen Menü auf nuget.org die Option Hochladen aus, navigieren Sie zum Paket auf Ihrem Computer, und wählen Sie Öffnen aus.

    Screenshot des Dialogfelds

    Wenn die Paket-ID bereits auf nuget.org vorhanden ist, erhalten Sie einen Fehler. Ändern Sie den Paketbezeichner in Ihrem Projekt, packen Sie neu, und versuchen Sie den Upload erneut.

  2. Wenn der Paketname verfügbar ist, wird der Abschnitt Überprüfen geöffnet, damit Sie die Metadaten aus dem Paketmanifest überprüfen können. Wenn Sie eine Infodatei in Ihr Paket eingefügt haben, wählen Sie Vorschau aus, um sicherzustellen, dass alle Inhalte ordnungsgemäß gerendert werden.

    Um die Metadaten zu ändern, bearbeiten Sie Ihre Projekt- oder NUSPEC-Datei , erstellen Sie neu, packen Sie sie neu, und laden Sie sie erneut hoch.

  3. Wenn alle Informationen bereit sind, wählen Sie Übermitteln aus.

Pushen über eine Befehlszeile

Zum Pushen von Paketen an nuget.org mit einer Befehlszeile können Sie entweder dotnet.exe oder nuget.exe v4.1.0 oder höher verwenden, die die erforderlichen NuGet-Protokolle implementieren. Weitere Informationen finden Sie unter NuGet-Protokolle.

Um eine der Befehlszeilen verwenden zu können, müssen Sie zunächst einen API-Schlüssel von nuget.org abrufen.

Erstellen eines API-Schlüssels

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

  2. Wählen Sie oben rechts Ihren Benutzernamen und dann API-Schlüssel aus.

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

  4. Wählen Sie unter Bereiche auswählen die Option Push aus.

  5. Geben Sie unterGlobmusterfür Pakete> auswählen die Zeichenfolge *ein.

  6. Klicken Sie auf Erstellen.

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

    Screenshot, der den neuen API-Schlüssel mit dem Link

Wichtig

  • Halten Sie Ihren API-Schlüssel immer geheim. Der API-Schlüssel ähnelt einem Kennwort, mit dem jeder Pakete in Ihrem Namen verwalten kann. Löschen Sie Ihren API-Schlüssel, oder generieren Sie ihn erneut, wenn er versehentlich aufgedeckt wird.
  • Speichern Sie Ihren Schlüssel an einem sicheren Speicherort, da Sie den Schlüssel später nicht mehr kopieren können. Wenn Sie auf die Seite „API-Schlüssel“ zurückkehren, müssen Sie den Schlüssel erneut generieren, um ihn zu kopieren. Sie können den API-Schlüssel auch entfernen, wenn Sie Pakete nicht mehr mithilfe von Push übertragen möchten.

Mithilfe des Bereichs können Sie separate API-Schlüssel für verschiedene Zwecke erstellen. Jeder Schlüssel verfügt über einen Ablaufzeitrahmen, und Sie können den Schlüssel auf bestimmte Pakete oder Globmuster festlegen. Außerdem können Sie jeden Schlüssel auf bestimmte Vorgänge festlegen: Pushen sie neue Pakete und Paketversionen, pushen Sie nur neue Paketversionen, oder heben Sie die Liste auf.

Mithilfe der Bereichsdefinition können Sie API-Schlüssel für verschiedene Personen erstellen, die Pakete für Ihre Organisation verwalten, sodass diese nur über die erforderlichen Berechtigungen verfügen.

Weitere Informationen finden Sie unter bereichsbezogene API-Schlüssel.

Verwenden der dotnet CLI

Führen Sie in dem Ordner, der die NUPKG-Datei enthält, den folgenden Befehl aus. Geben Sie ihren NUPKG-Dateinamen an, und ersetzen Sie den Schlüsselwert durch Ihren API-Schlüssel.

dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json

Die Ausgabe zeigt die Ergebnisse des Veröffentlichungsprozesses:

Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
  Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.

Weitere Informationen finden Sie unter dotnet nuget push.

Hinweis

Wenn Sie verhindern möchten, dass Ihr Testpaket auf nuget.org live ausgeführt wird, können Sie an die nuget.org Testwebsite unter pushen https://int.nugettest.org. Beachten Sie, dass pakete, die in int.nugettest.org hochgeladen wurden, möglicherweise nicht beibehalten werden.

Verwenden der NuGet-Befehlszeilenschnittstelle

  1. Führen Sie an einer Eingabeaufforderung den folgenden Befehl aus, und <your_API_key> ersetzen Sie dabei durch den Schlüssel, den Sie von nuget.org erhalten haben:

    nuget setApiKey <your_API_key>
    

    Dieser Befehl speichert Ihren API-Schlüssel in Ihrer NuGet-Konfiguration, sodass Sie den API-Schlüssel nicht erneut auf demselben Computer eingeben müssen.

    Hinweis

    Dieser API-Schlüssel wird nicht für die Authentifizierung mit privaten Feeds verwendet. Informationen zum Verwalten von Anmeldeinformationen für die Authentifizierung bei diesen Quellen finden Sie im Befehl nuget sources.

  2. Pushen Sie das Paket mithilfe des folgenden Befehls:

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

Veröffentlichen mit Azure Pipelines

Sie können Pakete per Push an nuget.org mit Azure Pipelines als Teil Ihres CI/CD-Prozesses (Continuous Integration/Continuous Deployment) übertragen. Weitere Informationen finden Sie unter Veröffentlichen von NuGet-Paketen mit Azure Pipelines.

Veröffentlichen eines signierten Pakets

Um ein signiertes Paket zu übermitteln, müssen Sie zuerst das Zertifikat registrieren, das Sie zum Signieren des Pakets verwendet haben. Wenn Sie die Anforderungen für signierte Pakete nicht erfüllen, lehnt nuget.org das Paket ab.

Paketgrößenbeschränkungen

Nuget.org hat eine Paketgröße von etwa 250 MB. Wenn ein Paket, das diesen Grenzwert überschreitet, hochgeladen wird, wird der folgende Fehler angezeigt:

Die Paketdatei überschreitet den Größengrenzwert. Versuchen Sie es erneut.

Wenn ein solches Paket über die Befehlszeile gepusht wird, wird die folgende Ausgabe erzeugt:

RequestEntityTooLarge https://www.nuget.org/api/v2/package/ 13903ms-Fehler: Der Antwortstatuscode weist nicht auf Erfolg hin: 413 (Die Paketdatei überschreitet das Größenlimit. Versuchen Sie es erneut.).

Wenn Sie diese Fehler erhalten, sollten Sie den Paketinhalt überarbeiten, um seine Größe zu reduzieren. Wenn Sie Debugsymbole in Ihr Paket packen, sollten Sie sie separat veröffentlichen. Andere Ressourcen können separat als ein oder mehrere Abhängigkeitspakete veröffentlicht werden, um sie in kleinere Blöcke zu verteilen.

Paketvalidierung und -indizierung

Pakete, die an nuget.org gepusht werden, durchlaufen mehrere Überprüfungen, z. B. Virenprüfungen, und vorhandene Pakete werden regelmäßig überprüft. Wenn das Paket alle Überprüfungen besteht, kann es eine Weile dauern, bis es indiziert wird und in den Suchergebnissen angezeigt wird. Während das Paket indiziert wird, wird es unter Nicht aufgelistete Pakete angezeigt, und auf der Paketseite wird die folgende Meldung angezeigt:

Screenshot einer Meldung, die angibt, dass ein Paket noch nicht veröffentlicht wurde.

Nach Abschluss der Validierung und Indizierung erhalten Sie eine E-Mail, dass das Paket erfolgreich veröffentlicht wurde. Wenn eine Überprüfung des Pakets fehlschlägt, wird die Paketseite aktualisiert, um den zugehörigen Fehler anzuzeigen, und Sie erhalten eine Benachrichtigungs-E-Mail.

Die Paketvalidierung und -indizierung dauert in der Regel weniger als 15 Minuten. Wenn die Paketveröffentlichung länger dauert als erwartet, überprüfen Sie nuget.org Status unter status.nuget.org. Wenn alle Systeme betriebsbereit sind und das Paket nicht innerhalb einer Stunde veröffentlicht wurde, wenden Sie sich über den Link Support kontaktieren auf der Paketseite an nuget.org.

Wählen Sie zum Anzeigen des Paketstatus unter Ihrem Kontonamen oben rechts auf nuget.org die Option Pakete verwalten aus, und wählen Sie das Paket unter Veröffentlichte Pakete oder Nicht aufgelistete Pakete aus.

Verwalten von Paketbesitzern auf nuget.org

Paketbesitzer verfügen über vollständige Berechtigungen für das Paket, einschließlich des Hinzufügens und Entfernens anderer Besitzer und des Veröffentlichens von Updates.

Obwohl die NUSPEC-Datei des NuGet-Pakets die Autoren des Pakets definiert, verwendet nuget.org diese Metadaten nicht, um den Besitz zu definieren. Stattdessen weist nuget.org der Person, die das Paket veröffentlicht, den Besitz zu, entweder dem angemeldeten Benutzer, der das Paket hochgeladen hat, oder dem Benutzer, dessen API-Schlüssel mit dotnet push, nuget SetApiKeyoder nuget pushverwendet wurde.

So ändern Sie den Besitz eines Pakets:

  1. Melden Sie sich bei nuget.org mit dem Konto an, das derzeit besitzer des Pakets ist.

  2. Wählen Sie oben rechts Ihren Kontonamen aus, wählen Sie Pakete verwalten aus, und erweitern Sie Veröffentlichte Pakete.

  3. Wählen Sie das Paket aus, das Sie verwalten möchten, und wählen Sie rechts auf der Paketseite Paket verwalten aus.

  4. Wählen Sie auf der Seite paketverwaltung die Option Besitzer aus.

  5. Führen Sie eine der folgenden Aktionen aus:

    • Wählen Sie Entfernen aus, um den aktuellen Besitzer zu entfernen.

    • Fügen Sie unter Besitzer hinzufügen einen Besitzer hinzu, indem Sie ihren Benutzernamen und eine Nachricht eingeben und Hinzufügen auswählen.

      Diese Aktion sendet eine E-Mail mit einem Bestätigungslink an den neuen Mitbesitzer. Sobald der Benutzer auf den Bestätigungslink geklickt hat, hat er volle Berechtigungen, um andere Besitzer hinzuzufügen und zu entfernen. Bis die Bestätigung vorliegt, zeigt der Abschnitt Aktuelle Besitzer ausstehende Genehmigungen für diese Person an.

Um den Besitz zu übertragen, fügen Sie den neuen Besitzer hinzu, wenn sich der Besitz ändert oder ein Paket unter dem falschen Konto veröffentlicht wird. Sobald sie den Besitz bestätigt haben, können sie den alten Besitzer aus der Liste entfernen.

Um einem Unternehmen oder einer Gruppe den Besitz zuzuweisen, erstellen Sie ein nuget.org Konto mit einem E-Mail-Alias, der an die entsprechenden Teammitglieder weitergeleitet wird. Beispielsweise befinden sich verschiedene Microsoft ASP.NET-Pakete im Gemeinsamen Besitz des Microsoft - und aspnet-Kontos .

Gelegentlich verfügt ein Paket möglicherweise nicht über einen aktiven Besitzer. Beispielsweise hat der ursprüngliche Besitzer möglicherweise das Unternehmen verlassen, das das Paket erstellt hat. Wenn Sie der rechtmäßige Besitzer eines Pakets sind und den Besitz wiedererlangen müssen, verwenden Sie das Kontaktformular auf nuget.org, um dem NuGet-Team Ihre Situation zu erläutern. Das Team verfolgt einen Prozess zum Überprüfen Ihres Besitzes, einschließlich des Versuchs, den vorhandenen Besitzer zu finden, und kann Ihnen eine neue Einladung senden, um der Paketbesitzer zu werden.

Nächste Schritte