Veröffentlichen von NuGet-Paketen über die Befehlszeile mithilfe von NuGet.exe

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Dieser Artikel erläutert, wie Sie mithilfe von zwei Authentifizierungsverfahren eine Verbindung mit Ihrem Feed herstellen und Pakete veröffentlichen: mit dem Azure Artifacts Credential Provider für Feeds in Ihrer eigenen Organisation und mit einem persönlichen Zugriffstoken (PAT) für Feeds, die in einer anderen Organisation gehostet werden.

Voraussetzungen

  • Eine Azure DevOps Organisation.
  • Ein Azure DevOps Projekt.
  • Ein Azure Artifacts Feed.
  • nuget.exe Version 4.8.0.5385 oder höher. Azure Artifacts empfiehlt NuGet 5.5.x oder höher für optimale Kompatibilität und Zuverlässigkeit.
  • Zum Veröffentlichen von Paketen müssen Sie ein Feed Publisher (Mitwirkender) oder höher sein.

Richten Sie den Anmeldeinformationsanbieter für Azure Artifacts ein

Der Azure Artifacts-Anmeldeinformationsanbieter ermöglicht die sichere Authentifizierung bei Ihren Azure Artifacts-Feeds. Um es mit nuget.exezu verwenden, müssen Sie es zuerst zum Plug-In-Suchpfad von NuGet hinzufügen. Ausführliche Informationen finden Sie unter Plug-In-Installation und Ermittlung. Nachdem das Plug-In hinzugefügt wurde, führen Sie die Installationsschritte für Ihr Betriebssystem aus:

Verwenden Sie eine der folgenden Methoden, um den Anmeldeinformationsanbieter für Azure Artifacts zu installieren:

Manuelle Installation

  1. Laden Sie die neueste version Microsoft.NetFx48.NuGet.CredentialProvider.zip herunter.

  2. Extrahieren Sie die ZIP-Datei.

  3. Kopieren Sie den netfx Ordner aus dem extrahierten Archiv in %UserProfile%/.nuget/plugins/. Der netfx Ordner ist für nuget.exe Kompatibilität erforderlich.

Installieren mit dem Hilfsskript

Alternativ können Sie das automatisierte Hilfsskript für eine optimierte Installation verwenden. Stellen Sie sicher, dass Sie über PowerShell 5.1 oder höher verfügen, und führen Sie dann Folgendes aus:

iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) } -AddNetfx"

Weitere Informationen finden Sie im Repository Azure Artifacts Credential Provider.

Mit einem Feed verbinden

Bevor Sie Ihre Pakete veröffentlichen können, richten Sie Ihr Projekt ein, und stellen Sie eine Verbindung mit Ihrem Feed wie folgt her:

  1. Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie dann zu Ihrem Projekt.

  2. Wählen Sie Artefakte und dann Ihren Feed im Dropdownmenü aus.

  3. Wählen Sie im Navigationsbereich links Verbindung mit Feed herstellen und dann NuGet.exe aus.

  4. Fügen Sie ihrem Projekt eine nuget.config Datei im selben Ordner wie Ihre .csproj oder .sln Datei hinzu. Fügen Sie den bereitgestellten XML-Codeausschnitt in Ihre Datei ein. Der Codeausschnitt sollte wie folgt aussehen:

    • Organisationsspezifischer Feed:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
    • Projektbezogener Feed:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
  1. Melden Sie sich bei Ihrem Azure DevOps-Server an, und navigieren Sie dann zu Ihrem Projekt.

  2. Wählen Sie Artefakte und dann Ihren Feed aus.

  3. Wählen Sie Verbinden mit Feed, und wählen Sie dann NuGet.exe aus dem linken Navigationsbereich.

  4. Fügen Sie Ihrem Projekt eine nuget.config-Datei im selben Ordner wie Ihre .csproj- oder .sln-Datei hinzu und fügen Sie dann das bereitgestellte XML-Snippet in Ihre Datei ein.

Veröffentlichen in einem Feed in derselben Organisation

Nachdem Sie nuget.config konfiguriert und sich mithilfe des Azure Artifacts-Anmeldeinformationsanbieters authentifiziert haben, führen Sie den folgenden Befehl aus, um ein Paket in Ihrem Feed zu veröffentlichen. Ersetzen Sie die Platzhalter durch die entsprechenden Werte:

nuget push <PACKAGE_PATH> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -ApiKey <ANY_STRING>

Beispiel:

nuget push MyPackage.5.0.2.nupkg -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -ApiKey AZ

Anmerkung

Der Azure Artifacts Credential Provider übernimmt die eigentliche Authentifizierung beim Push, aber NuGet erfordert dennoch einen -ApiKey-Wert, damit der Befehl akzeptiert wird. Azure Artifacts ignoriert den von Ihnen bereitgestellten Wert, sodass jede nicht leere Zeichenfolge funktioniert.

Veröffentlichen in einem Feed in einer anderen Organisation

Wenn sich der Zielfeed in einer anderen Azure DevOps Organisation befindet, erstellen Sie einen PAT in dieser Organisation, und fügen Sie den Feed als Quelle in Ihrer nuget.config Datei hinzu.

  1. Erstellen Sie ein persönliches Zugriffstoken (PAT) in der Zielorganisation mit dem Berechtigungsumfang Packaging>Lesen &-schreiben.

  2. Führen Sie den folgenden Befehl aus, um den Feed als Quelle hinzuzufügen. Mit diesem Befehl wird Ihr PAT zu nuget.config hinzugefügt. Speichern Sie die Datei daher an einem sicheren Ort, und checken Sie sie nicht in die Quellcodeverwaltung ein.

    nuget sources Add -Name <SOURCE_NAME> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -UserName <USER_NAME> -Password <PERSONAL_ACCESS_TOKEN> -config <PATH_TO_NUGET_CONFIG_FILE>
    
  3. Veröffentlichen Sie das Paket mithilfe des soeben hinzugefügten Quellnamens.

    nuget push <PACKAGE_PATH> -Source <SOURCE_NAME> -ApiKey <ANY_STRING>
    

Beispiel:

nuget sources Add -Name "MySource" -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -UserName MyUserName -Password YourPersonalAccessToken -config ./nuget.config
nuget push nupkgs/mypackage.1.1.8.nupkg -Source MySource -ApiKey AZ

Anmerkung

Wenn Ihre Organisation eine Firewall oder einen Proxyserver verwendet, lassen Sie die Azure Artifacts Domänen-URLs und IP-Adressen zu.

Problembehandlung

Authentifizierungsaufforderung wird nicht angezeigt

Stellen Sie sicher, dass der Azure Artifacts-Anmeldeinformationsanbieter installiert ist und Sie NuGet in Version 4.8.0.5385 oder höher verwenden. Schritte zum Einrichten finden Sie unter Herstellen einer Verbindung mit Azure Artifacts Feeds mit NuGet.exe.

Fehler beim Veröffentlichen, da die Version bereits vorhanden ist.

Paketversionen in Azure Artifacts sind unveränderlich. Nachdem Sie eine Version veröffentlicht haben, können Sie sie nicht überschreiben oder dieselbe Versionsnummer wiederverwenden, auch wenn Sie das Paket löschen. Aktualisieren Sie die Paketversion, erstellen Sie das Paket neu, und veröffentlichen Sie es dann erneut.

Die Veröffentlichung schlägt hinter einer Firewall oder einem Proxy fehl

Lassen Sie die Domänen-URLs und IP-Adressen von Azure Artifacts zu, und wiederholen Sie dann den Veröffentlichungsvorgang.

Veröffentlichen schlägt mit einem 403-Fehler fehl

Dieser Fehler bedeutet in der Regel, dass Ihr Konto keine Veröffentlichungsberechtigungen für den Feed hat. Sie benötigen mindestens die Rolle Feed Publisher (Mitwirkender), um Pakete zu übertragen. Bitten Sie den Besitzer eines Feeds, Ihre Rolle zu aktualisieren, und versuchen Sie es dann erneut.