Pubblicare pacchetti NuGet dalla riga di comando usando NuGet.exe

servizi Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Questo articolo illustra come connettersi ai feed e pubblicare pacchetti usando due flussi di autenticazione: il provider di credenziali Azure Artifacts per i feed nella propria organizzazione e un token di accesso personale per i feed ospitati in un'organizzazione diversa.

Prerequisiti

  • Un'organizzazione di Azure DevOps.
  • Progetto di Azure DevOps.
  • Un feed di Azure Artifacts.
  • nuget.exe versione 4.8.0.5385 o successiva. Azure Artifacts consiglia NuGet 5.5.x o versione successiva per garantire la migliore compatibilità e affidabilità.
  • Per pubblicare pacchetti, è necessario essere un Autore del feed (Collaboratore) o superiore.

Configurare il provider di credenziali Azure Artifacts

Il provider di credenziali Azure Artifacts consente l'autenticazione sicura per i feed di Azure Artifacts. Per usarlo con nuget.exe, è prima necessario aggiungerlo al percorso di ricerca del plug-in di NuGet. Per informazioni dettagliate, vedere Installazione e individuazione dei plug-in. Dopo aver aggiunto il plug-in, seguire la procedura di installazione per il sistema operativo:

Usare uno dei metodi seguenti per installare il provider di credenziali Azure Artifacts:

Installazione manuale

  1. Scaricare la versione più recente Microsoft.NetFx48.NuGet.CredentialProvider.zip.

  2. Estrarre il file ZIP.

  3. Copiare la netfx cartella dall'archivio estratto in %UserProfile%/.nuget/plugins/. La netfx cartella è necessaria per la compatibilità nuget.exe.

Installare utilizzando lo script di supporto

In alternativa, è possibile usare lo script helper automatizzato per un'installazione semplificata. Assicurarsi di avere PowerShell 5.1 o versione successiva e quindi eseguire:

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

Per altre informazioni, consulta il repository Azure Artifacts Credential Provider.

Collegarsi a un feed

Prima di poter pubblicare i pacchetti, configurare il progetto e connettersi al feed come indicato di seguito:

  1. Accedere all'organizzazione di Azure DevOps e quindi passare al progetto.

  2. Seleziona Artifactse quindi seleziona il tuo feed dal menu a discesa.

  3. Selezionare Connetti al feede quindi selezionare NuGet.exe nel riquadro di navigazione a sinistra.

  4. Aggiungi un file nuget.config al tuo progetto, nella stessa cartella del file .csproj o .sln. Incollare il frammento XML specificato nel tuo file. Il frammento di codice dovrebbe essere simile al seguente:

    • feed con ambito organizzativo:

      <?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>
      
    • Feed per il progetto:

      <?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. Accedere al server Azure DevOps e quindi passare al progetto.

  2. Selezionare Artifactse quindi selezionare il feed.

  3. Selezionare Connetti al feede quindi selezionare NuGet.exe nel riquadro di spostamento a sinistra.

  4. Aggiungere un nuget.config file al progetto, nella stessa cartella del .csproj file o .sln e quindi incollare il frammento XML fornito nel file.

Pubblicare in un feed all'interno della stessa organizzazione

Dopo aver configurato nuget.config ed eseguito l'autenticazione usando il provider di credenziali Azure Artifacts, eseguire il comando seguente per pubblicare un pacchetto nel feed. Sostituire i segnaposto con i valori appropriati:

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

Esempio:

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

Nota

Il provider di credenziali Azure Artifacts gestisce l'autenticazione reale per il push, ma NuGet richiede comunque un -ApiKey valore per accettare il comando. Azure Artifacts ignora il valore specificato, pertanto tutte le stringhe nonempty funzionano.

Pubblicare in un feed in un'altra organizzazione

Se il feed di destinazione si trova in un'organizzazione Azure DevOps diversa, crea un PAT in tale organizzazione e aggiungi il feed come origine nel file nuget.config.

  1. Creare un token di accesso personale (PAT) nell'organizzazione di destinazione con ambito Packaging>.

  2. Eseguire il comando seguente per aggiungere il feed come origine. Questo comando aggiunge il tuo PAT a nuget.config, quindi conserva il file in modo sicuro e non inserirlo nel controllo del codice sorgente.

    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. Pubblicare il pacchetto usando il nome di origine appena aggiunto.

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

Esempio:

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

Nota

Se l'organizzazione usa un firewall o un server proxy, consentire l'accesso agli URL e indirizzi IP del dominio Azure Artifacts.

Troubleshooting

La richiesta di autenticazione non viene visualizzata

Verificare che il provider di credenziali Azure Artifacts sia installato e che si stia usando la versione 4.8.0.5385 nuGet o successiva. Per i passaggi di installazione, vedere Connettersi ai feed di Azure Artifacts con NuGet.exe.

La pubblicazione ha esito negativo perché la versione esiste già

Le versioni dei pacchetti in Azure Artifacts non sono modificabili. Dopo aver pubblicato una versione, non è possibile sovrascriverla o riutilizzare lo stesso numero di versione, anche se si elimina il pacchetto. Aggiornare la versione del pacchetto, ricompilare il pacchetto e quindi pubblicarla di nuovo.

La pubblicazione non riesce dietro un firewall o un proxy

Consentire gli URL e gli indirizzi IP del dominio Azure Artifacts e quindi ripetere l'operazione di pubblicazione.

La pubblicazione non riesce con l'errore 403

Questo errore indica in genere che l'account non dispone delle autorizzazioni di pubblicazione per il feed. Per eseguire il push dei pacchetti, è necessario almeno il ruolo Feed Publisher (Collaboratore). Chiedi a un proprietario del feed di aggiornare il tuo ruolo, quindi riprova.