Publicera NuGet-paket från kommandoraden med hjälp av NuGet.exe

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

Den här artikeln beskriver hur du ansluter till ditt flöde och publicerar paket med hjälp av två autentiseringsflöden: Azure Artifacts Provider för autentiseringsuppgifter för feeds i din egen organisation och en personlig åtkomsttoken (PAT) för feeds som finns i en annan organisation.

Förutsättningar

  • En Azure DevOps organisation.
  • Ett Azure DevOps projekt.
  • Ett Azure Artifacts feed.
  • nuget.exe version 4.8.0.5385 eller senare. Azure Artifacts rekommenderar NuGet 5.5.x eller senare för bästa kompatibilitet och tillförlitlighet.
  • För att publicera paket måste du vara Feed Publisher (medverkande) eller högre.

Konfigurera providern för Azure Artifacts-autentiseringsuppgifter

Azure Artifacts-providern för autentiseringsuppgifter möjliggör säker autentisering till dina Azure Artifacts feeds. Om du vill använda den med nuget.exemåste du först lägga till den i NuGets sökväg för plugin-program. Mer information finns i Installation och identifiering av plugin-program. När plugin-programmet har lagts till följer du installationsstegen för operativsystemet:

Använd någon av följande metoder för att installera Azure Artifacts-providern för autentiseringsuppgifter:

Manuell installation

  1. Ladda ned den senaste versionen av Microsoft.NetFx48.NuGet.CredentialProvider.zip.

  2. Extrahera zip-filen.

  3. netfx Kopiera mappen från det extraherade arkivet till %UserProfile%/.nuget/plugins/. Mappen netfx krävs för nuget.exe kompatibilitet.

Installera med hjälpskriptet

Du kan också använda det automatiserade hjälpskriptet för en effektiv installation. Kontrollera att du har PowerShell 5.1 eller senare och kör sedan:

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

Mer information finns i lagringsplatsen Azure Artifacts Credential Provider.

Anslut till ett flöde

Innan du kan publicera paketen konfigurerar du projektet och ansluter till feeden på följande sätt:

  1. Logga in på din Azure DevOps-organisation och navigera sedan till projektet.

  2. Välj Artefakteroch välj sedan din feed i rullgardinsmenyn.

  3. Välj Anslut för att mataoch välj sedan NuGet.exe i det vänstra navigeringsfönstret.

  4. Lägg till en nuget.config fil i projektet i samma mapp som din .csproj eller .sln filen. Klistra in det angivna XML-kodfragmentet i filen. Kodfragmentet bör se ut så här:

    • organisationsomfattande flöde:

      <?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>
      
    • projektomfattande flöde:

      <?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. Logga in på Din Azure DevOps-server och navigera sedan till projektet.

  2. Välj först Artefakteroch välj sedan din feed.

  3. Välj Anslut till feedoch välj sedan NuGet.exe i det vänstra navigeringsfönstret.

  4. Lägg till en nuget.config fil i projektet, i samma mapp som din .csproj eller .sln filen, och klistra sedan in det angivna XML-kodfragmentet i filen.

Publicera till ett flöde i samma organisation

När du har konfigurerat nuget.config och autentiserat med hjälp av Autentiseringsprovidern för Azure Artifacts kör du följande kommando för att publicera ett paket till din feed. Ersätt platshållarna med lämpliga värden:

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

Exempel:

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

Anteckning

Azure Artifacts-providern för autentiseringsuppgifter hanterar den verkliga autentiseringen för push-överföringen, men NuGet kräver fortfarande ett -ApiKey värde för att acceptera kommandot. Azure Artifacts ignorerar det värde du anger, så alla icke-snåla strängar fungerar.

Publicera till en feed i en annan organisation

Om målflödet finns i en annan Azure DevOps organisation skapar du en PAT i organisationen och lägger till flödet som källa i nuget.config filen.

  1. Skapa en personlig åtkomsttoken (PAT) i målorganisationen med behörigheten Förpackning>Läs och skriv.

  2. Kör följande kommando för att lägga till feeden som källa. Det här kommandot lägger till din PAT i nuget.config, så lagra filen på ett säkert sätt och kontrollera den inte i källkontrollen.

    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. Publicera paketet med det källnamn som du nyss lade till.

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

Exempel:

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

Anteckning

Om din organisation använder en brandvägg eller proxyserver, tillåt Azure Artifacts domän-URL:er och IP-adresser.

Troubleshooting

Autentiseringsprompten visas inte

Kontrollera att Azure Artifacts autentiseringsprovidern är installerad och att du använder NuGet-versionen 4.8.0.5385 eller senare. Installationssteg finns i Ansluta till Azure Artifacts feeds med NuGet.exe.

Publiceringen misslyckas eftersom versionen redan finns

Paketversioner i Azure Artifacts är oföränderliga. När du har publicerat en version kan du inte skriva över den eller återanvända samma versionsnummer, även om du tar bort paketet. Uppdatera paketversionen, återskapa paketet och publicera det sedan igen.

Publicering misslyckas bakom en brandvägg eller proxy

Tillåt Azure Artifacts-domän-URL:er och IP-adresser och försök sedan publicera igen.

Publiceringen misslyckas med ett 403-fel

Det här felet innebär vanligtvis att ditt konto inte har publiceringsbehörighet för feeden. Du behöver minst rollen Feed Publisher (deltagare) för att skicka paket. Be en feedägare att uppdatera din roll och försök sedan igen.