Veröffentlichen von PaketenPublishing packages

Sobald Sie ein Paket erstellt haben und Ihre .nupkg-Datei zur Hand haben, ist es einfach, dieses für andere Entwickler verfügbar zu machen, sowohl als öffentliche also auch als private Bereitstellung:Once you have created a package and have your .nupkg file in hand, it's a simple process to make it available to other developers, either publicly or privately:

  • Öffentliche Pakete werden wie in diesem Artikel beschrieben global für alle Entwickler auf nuget.org zur Verfügung gestellt (hierfür ist NuGet 4.1.0 oder höher erforderlich).Public packages are made available to all developers globally through nuget.org as described in this article (requires NuGet 4.1.0+).
  • Private Pakete werden lediglich einem Team oder einer Organisation zur Verfügung gestellt, indem entweder eine Dateifreigabe, ein privater NuGet-Server, Azure Artifacts oder ein Drittanbieterrepository wie MyGet, ProGet, Nexus Repository und Artifactory gehostet wird.Private packages are available to only a team or organization, by hosting them either a file share, a private NuGet server, Azure Artifacts, or a third-party repository such as myget, ProGet, Nexus Repository, and Artifactory. Weitere Informationen finden Sie in der Übersicht zum Hosten von Paketen.For additional details, see Hosting Packages Overview.

In diesem Artikel wird das Veröffentlichen auf nuget.org erläutert. Informationen zum Veröffentlichen in Azure Artifacts finden Sie im Artikel Paketverwaltung.This article covers publishing to nuget.org; for publishing to Azure Artifacts, see Package Management.

Veröffentlichen auf nuget.orgPublish to nuget.org

Bei nuget.org müssen Sie sich mit einem Microsoft-Konto anmelden. Dabei werden Sie aufgefordert, das Konto bei nuget.org zu registrieren. Sie können sich auch mit einem nuget.org-Konto anmelden, das mit älteren Versionen des Portals erstellt wurde.For nuget.org, you must sign in with a Microsoft account, with which you'll be asked to register the account with nuget.org. You can also sign in with a nuget.org account created using older versions of the portal.

„Anmelden“ bei NuGet

Als Nächstes können Sie entweder das Paket über das Webportal von nuget.org hochladen, es über die Befehlszeile per Push an nuget.org übertragen (benötigt nuget.exe 4.1.0 oder höher) oder es im Rahmen eines CI/CD-Vorgangs über Azure DevOps Services veröffentlichen. Dies wird in den folgenden Abschnitten beschrieben.Next, you can either upload the package through the nuget.org web portal, push to nuget.org from the command line (requires nuget.exe 4.1.0+) , or publish as part of a CI/CD process through Azure DevOps Services, as described in the following sections.

Navigieren Sie im Web-Portal von nuget.org zur Registerkarte „Upload Package“ (Paket hochladen)Web portal: use the Upload Package tab on nuget.org

  1. Wählen Sie oben im Menü von nuget.org die Option Upload (Upload), und wählen Sie den Speicherort des Pakets aus.Select Upload on the top menu of nuget.org and browse to the package location.

    Upload eines Pakets auf nuget.org

  2. nuget.org informiert Sie darüber, ob der Paketname verfügbar ist.nuget.org tells you if the package name is available. Ist dies nicht der Fall, ändern Sie den Paketbezeichner in Ihrem Projekt, erstellen Sie es neu, und wiederholen Sie den Uploadvorgang.If it isn't, change the package identifier in your project, rebuild, and try the upload again.

  3. Wenn der Paketname verfügbar ist, öffnet nuget.org den Abschnitt Verify (Prüfen), in dem Sie die Metadaten aus dem Paketmanifest überprüfen können.If the package name is available, nuget.org opens a Verify section in which you can review the metadata from the package manifest. Um die Metadaten zu ändern, bearbeiten Sie Ihr Projekt (Projektdatei oder .nuspec-Datei), erstellen es neu, erstellen das Paket neu und laden es erneut hoch.To change any of the metadata, edit your project (project file or .nuspec file), rebuild, recreate the package, and upload again.

  4. Unter Import Documentation (Dokumentation importieren) können Sie Markdown einfügen, auf Ihre Dokumente mit einer URL verweisen oder eine Dokumentationsdatei hochladen.Under Import Documentation you can paste Markdown, point to your docs with a URL, or upload a documentation file.

  5. Wenn alle Informationen eingegeben sind, wählen Sie die Schaltfläche Submit (Senden).When all the information is ready, select the Submit button

BefehlszeileCommand line

Sie müssen nuget.exe v4.1.0 oder höher verwenden, um Pakete per Push an nuget.org übertragen zu können, da so die erforderlichen NuGet-Protokolle implementiert werden.To push packages to nuget.org you must use nuget.exe v4.1.0 or above, which implements the required NuGet protocols. Außerdem benötigen Sie einen API-Schlüssel, der auf nuget.org erstellt wird.You also need an API key, which is created on nuget.org.

Erstellen von API-SchlüsselnCreate API keys

  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 „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 den Paketnamen (eindeutige Paket-ID) an, und ersetzen Sie den Schlüsselwert durch den API-Schlüssel:Run the following command, specifying your package name (unique package ID) 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öffentlichen mit dem Befehl „nuget push“Publish with nuget push

  1. Führen Sie an einer Eingabeaufforderung den folgenden Befehl aus, und ersetzen Sie <your_API_key> durch den von nuget.org erhaltenen Schlüssel:At a command prompt, run the following command, replacing <your_API_key> with the key obtained from nuget.org:

    nuget setApiKey <your_API_key>
    

    Dieser Befehl speichert Ihren API-Schlüssel in Ihrer NuGet-Konfiguration, sodass Sie diesen Schritt auf demselben Computer wiederholen müssen.This command stores your API key in your NuGet configuration so that you need repeat this step again on the same computer.

  2. Übertragen Sie Ihr Paket mit folgendem Befehl per Push an den NuGet-Katalog:Push your package to NuGet Gallery using the following command:

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

Veröffentlichen signierter PaketePublish signed packages

Um signierte Pakete zu übermitteln, müssen Sie zunächst das Zertifikat registrieren, das zum Signieren der Pakete verwendet wird.To submit signed packages, you must first register the certificate used for signing the packages.

Warnung

Auf nuget.org werden Pakete abgelehnt, die den Anforderungen für signierte Pakete nicht entsprechen.nuget.org rejects packages that don't satisfy the signed package requirements.

Paketvalidierung und -indizierungPackage validation and indexing

Per Push an nuget.org übertragene Pakete werden verschiedenen Prüfungen, wie z.B. auf Viren, unterzogen.Packages pushed to nuget.org undergo several validations, such as virus checks. (Alle Pakete auf nuget.org werden in regelmäßigen Abständen geprüft.)(All packages on nuget.org are periodically scanned.)

Wenn das Paket alle Validierungsüberprüfungen bestanden hat, kann es einige Zeit dauern, bis es indiziert und in den Suchergebnissen angezeigt wird.When the package has passed all validation checks, it might take a while for it to be indexed and appear in search results. Nachdem die Indizierung abgeschlossen wurde, erhalten Sie eine Bestätigungs-E-Mail, die bestätigt, dass das Paket erfolgreich veröffentlicht wurde.Once indexing is complete, you receive an email confirming that the package was successfully published. Wenn das Paket eine Validierungsüberprüfung nicht besteht, wird die Paketdetailansicht aktualisiert und zeigt den entsprechenden Fehler an. Auch dann erhalten Sie eine E-Mail-Benachrichtigung.If the package fails a validation check, the package details page will update to display the associated error and you also receive an email notifying you about it.

Die Validierung und Indizierung eines Pakets nimmt für gewöhnlich unter 15 Minuten in Anspruch.Package validation and indexing usually takes under 15 minutes. Wenn das Veröffentlichen des Pakets längere Zeit als erwartet in Anspruch nimmt, besuchen Sie status.nuget.org, um zu überprüfen, ob gerade eine Störung auf nuget.org vorliegt.If the package publishing is taking longer than expected, visit status.nuget.org to check if nuget.org is experiencing any interruptions. Wenn alle Systeme in Betrieb sind und das Paket innerhalb einer Stunde nicht erfolgreich veröffentlicht wurde, melden Sie sich auf nuget.org an, und informieren Sie uns über den Link zum Support auf der Paketseite.If all systems are operational and the package hasn't been successfully published within an hour, please login to nuget.org and contact us using the Contact Support link on the package page.

Um den Status eines Pakets zu sehen, wählen Sie unter Ihrem Kontonamen auf nuget.org die Option Manage packages (Pakete verwalten). Sie erhalten eine Bestätigungs-E-Mail, sobald die Überprüfung abgeschlossen ist.To see the status of a package, select Manage packages under your account name on nuget.org. You receive a confirmation email when validation is complete.

Beachten Sie, dass es einige Zeit in Anspruch nehmen kann, bis Ihr Paket indiziert und in den Suchergebnissen angezeigt wird, damit andere es finden können. Währenddessen wird die folgende Nachricht auf der Paketseite angezeigt:Note that it might take a while for your package to be indexed and appear in search results where others can find it, during which time you see the following message on your package page:

Nachricht, dass das Paket noch nicht veröffentlicht wurde.

Azure DevOps Service (CI/CD)Azure DevOps Services (CI/CD)

Wenn Sie Pakete im Rahmen eines Continuous Integration/Deployment-Prozesses mit Azure DevOps Services per Push an nuget.org übertragen, müssen Sie nuget.exe 4.1 oder höher in den NuGet-Tasks verwenden.If you push packages to nuget.org using Azure DevOps Services as part of your Continuous Integration/Deployment process, you must use nuget.exe 4.1 or above in the NuGet tasks. Weitere Informationen finden Sie im Microsoft DevOps-Blogbeitrag Using the latest NuGet in your Build (Verwenden der aktuellen Version von NuGet im Build).Details can be found on Using the latest NuGet in your build (Microsoft DevOps blog).

Verwalten von Paketbesitzern auf nuget.orgManaging package owners on nuget.org

Obwohl die Datei .nuspec jedes NuGet-Pakets den Ersteller des Pakets festlegt, verwendet der NuGet-Katalog diese Metadaten nicht, um Besitz anzugeben.Although each NuGet package's .nuspec file defines the package's authors, the nuget.org gallery does not use that metadata to define ownership. Stattdessen legt nuget.org den Benutzer als Besitzer fest, der das Paket zuerst veröffentlicht.Instead, nuget.org assigns initial ownership to the person who publishes the package. Dabei handelt es sich entweder um den angemeldeten Benutzer, der das Paket über die Benutzeroberfläche von nuget.org hochgeladen hat oder um den Benutzer, dessen API-Schlüssel mit nuget SetApiKey oder nuget push verwendet wurde.This is either the logged-in user who uploaded the package through the nuget.org UI, or the users whose API key was used with nuget SetApiKey or nuget push.

Alle Paketbesitzer haben volle Berechtigungen für das Paket (das Hinzufügen und Entfernen anderer Benutzer und das Veröffentlichen von Updates inbegriffen).All package owners have full permissions for the package, including adding and removing other owners, and publishing updates.

Führen Sie folgende Aktionen durch, um den Besitzer eines Pakets zu ändern:To change ownership of a package, do the following:

  1. Melden Sie sich auf nuget.org mit dem Konto an, beidem es sich um den aktuellen Besitzer des Pakets handelt.Sign in to nuget.org with the account that is the current owner of the package.
  2. Wählen Sie Ihren Kontonamen, wählen Sie Manage packages (Pakete verwalten), und erweitern Sie Published Packages (Veröffentlichte Pakete).Select your account name, select Manage packages, and expand Published Packages.
  3. Wählen Sie das Paket, das Sie verwalten möchten, und wählen Sie dann auf der rechten Seite Manage owners (Besitzer verwalten).Select on the package you want to manage, then on the right side select Manage owners.

Hier stehen Ihnen nun verschiedene Optionen zur Verfügung:From here you have several options:

  1. Entfernen Sie alle Besitzer, die unter Current Owners (Aktuelle Besitzer) aufgelistet sind.Remove any owner listed under Current Owners.
  2. Fügen Sie unter Add Owner (Besitzer hinzufügen) einen Besitzer hinzu, indem Sie dessen Benutzernamen sowie eine Nachricht eingeben und dann Add (Hinzufügen) wählen.Add an owner under Add Owner by entering their user name, a message, and selecting Add. Durch diese Aktion wird eine E-Mail mit einem Bestätigungslink an den neuen Mitbesitzer gesendet.This action sends an email to that new co-owner with a confirmation link. Sobald der Benutzer auf den Bestätigungslink geklickt hat, hat er volle Berechtigungen, um andere Besitzer hinzuzufügen und zu entfernen.Once confirmed, that person has full permissions to add and remove owners. (Bis zur Bestätigung wird im Abschnitt Current Owners (Aktuelle Besitzer) für diese Person „Pending approval“ (Ausstehende Genehmigung) angezeigt.)(Until confirmed, the Current Owners section indicates pending approval for that person.)
  3. Wenn Sie den Besitz abgeben möchten (bei einem Besitzerwechsel oder einem unter dem falschen Konto veröffentlichten Paket), fügen Sie einfach einen neuen Besitzer hinzu. Sobald dieser den Besitz bestätigt hat, kann er Sie aus der Liste der Besitzer entfernen.To transfer ownership (as when ownership changes or a package was published under the wrong account), add the new owner, and once they've confirmed ownership they can remove you from the list.

Wenn Sie den Besitz einem Unternehmen oder einer Gruppe zuweisen möchten, erstellen Sie auf nuget.org ein Konto mit einem E-Mail-Alias, der eine Weiterleitung an die entsprechenden Teammitglieder durchführt.To assign ownership to a company or group, create a nuget.org account using an email alias that is forwarded to the appropriate team members. Es gibt z.B. einige Microsoft ASP.NET-Pakete, deren Besitz auf microsoft- und auf aspnet-Konten aufgeteilt ist, die derartige Aliase darstellen.For example, various Microsoft ASP.NET packages are co-owned by the microsoft and aspnet accounts, which simply such aliases.

Wiederherstellen des PaketbesitzesRecovering package ownership

Es kann vorkommen, dass ein Paket keinen aktiven Besitzer hat.Occasionally, a package may not have an active owner. Es kann z.B. sein, dass der ursprüngliche Besitzer das Unternehmen verlassen hat, das das Paket erstellt. Zudem können die Anmeldeinformationen für nuget.org verloren gegangen sein. Außerdem gab es anfangs Fehler im Katalog, die dazu geführt haben, dass es besitzerlose Pakete gab.For example, the original owner may have left the company that produces the package, nuget.org credentials are lost, or earlier bugs in the gallery left a package ownerless.

Wenn Sie der rechtmäßige Besitzer eines Pakets sind und das Paket wieder in Ihren Besitz bringen möchten, füllen Sie das Kontaktformular auf nuget.org aus, in dem Sie dem NuGet-Team Ihre Situation schildern können.If you are the rightful owner of a package and need to regain ownership, use the contact form on nuget.org to explain your situation to the NuGet team. Dann wird der Besitz des Pakets überprüft. Dabei wird versucht, den Besitzer des Pakets über die Projekt-URL, Twitter, E-Mail oder andere Kanäle zu ermitteln.We then follow a process to verify your ownership of the package, including trying to locate the existing owner through the package's Project URL, Twitter, email, or other means. Sollte dies alles zu keinem Ergebnis führen, können wir Ihnen erneut eine Einladung schicken, damit Sie wieder Besitzer des Pakets werden.But if all else fails, we can send you a new invite to become an owner.