Publicera NuGet-paket från kommandoraden (dotnet)

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

Den här guiden beskriver hur du konfigurerar projektet för att publicera NuGet-paket med hjälp av dotnet-kommandoradsgränssnittet.

Förutsättningar

Produkt Krav
Azure DevOps – En organisation i Azure DevOps .
– Ett Azure DevOps-projekt.
– Ett Azure Artifacts-flöde.
– Ladda ned och installera .NET SDK version 9.0.200 eller senare.

Konfigurera providern för Azure Artifacts-autentiseringsuppgifter

Om du vill autentisera med feeden måste du först installera providern Azure Artifacts Credential. Med hjälp av installationsprogrammet för verktyget som ingår i dotnet kan du installera providern för autentiseringsuppgifter från CLI med hjälp av följande kommando:

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool

Om nuget.config har konfigurerats för att endast använda Azure Artifacts källor kör du installationskommandot utanför katalogen eller anger uttryckligen nuget.org som källa:

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --source https://api.nuget.org/v3/index.json

Alternativt kan du låsa verktyget till en huvudversion (till exempel i containeravbildningar där reproducerbarhet är viktigt):

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --version 2.* --source https://api.nuget.org/v3/index.json

Första användningen

Använd någon av följande metoder första gången du utför en åtgärd som kräver autentisering:

  1. Kör kommandot med --interactive så att dotnet kan uppmana dig att logga in. Detta är den rekommenderade metoden för de flesta lokala utvecklingsscenarier.

Innan du kör ett interaktivt kommando kontrollerar du att projektet har konfigurerats och att feeden har lagts till inuget.config. Information om installation finns i projektkonfiguration.

När projektet har konfigurerats och anslutits till feeden går du till projektkatalogen och kör:

dotnet restore --interactive

Det här kommandot loggar in dig och hämtar en sessionstoken. När du har loggat in kan du köra autentiserade kommandon utan --interactive, så länge den cachelagrade sessionstoken är giltig. Mer information finns i Cacheplatser för sessionstoken.

  1. För icke-interaktiva scenarier, till exempel Docker-containrar och anpassad automatisering, anger du autentiseringsuppgifter via miljövariabler.

För Azure-pipelines använder du uppgiften NuGetAuthenticate@1 för att autentisera till feeden innan du kör kommandon som dotnet restore eller dotnet nuget push. Mer information finns i Restore NuGet-paket med Azure-pipelines.

Skapa en feed

Om du redan har en feed går du vidare till nästa steg. Annars följer du anvisningarna nedan för att skapa en ny:

  1. Logga in på Azure DevOps och gå till projektet.

  2. Välj Artefakter och välj sedan Skapa flöde.

  3. Ange ett beskrivande namn för feeden och definiera dess synlighet (vem som kan använda feeden). Ange omfånget för flödet och om du vill inkludera paket från offentliga källor markerar du kryssrutan Inkludera paket från vanliga offentliga källor .

  4. Välj Skapa när du är klar.

Anslut till en feed

Innan du kan publicera paket i feeden måste du autentisera med Azure Artifacts. Följ anvisningarna nedan för att konfigurera projektet och autentisera med feeden:

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

  2. Välj Artefakteroch välj sedan din feed från rullgardinsmenyn.

  3. Välj Anslut till flödeoch välj sedan dotnet i avsnittet NuGet till vänster.

  4. Skapa en nuget.config fil i samma mapp som din csproj- eller sln fil. Kopiera följande XML-kodfragment och klistra in det i den nya filen och ersätt platshållarna med relevant information:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="<FEED_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 Artefakteroch välj sedan din feed.

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

  4. Följ anvisningarna i avsnittet Projektinställning för att ansluta till flödet.

    En skärmbild som visar hur du ansluter till en feed med dotnet i Azure DevOps Server 2020 och 2022.

Publicera paket till en feed i samma organisation

Kör följande kommando för att publicera ett paket i feeden. Ersätt platshållarna med lämpliga värden:

dotnet nuget push --source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json --api-key <ANY_STRING> <PACKAGE_PATH> 

Exempel:

dotnet nuget push --source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json --api-key AZ bin/MyPackage.5.0.2.nupkg

Obs

Parametern api-key krävs när du publicerar till en Azure Artifacts-feed, men du kan använda valfri sträng som dess värde.

Publicera paket till en feed i en annan organisation

Om du vill publicera dina NuGet-paket i en feed i en annan Azure DevOps-organisation måste du först skapa en personlig åtkomsttoken (PAT) i målorganisationen, lägga till den nya paketkällan i konfigurationsfilen och sedan köra publiceringskommandot:

  1. Gå till den organisation som är värd för målflödet och skapa en personlig åtkomsttoken (PAT) med Packaging>Läs- och skrivåtkomst räckvidd.

  2. Ersätt platshållaren <PERSONAL_ACCESS_TOKEN> med din personliga åtkomsttoken och kör sedan följande kommando för att lägga till paketkällan i nuget.config-filen. Kontrollera att den här filen lagras på ett säkert sätt och inte är incheckad i källkontrollen.

    dotnet nuget add source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json --name <SOURCE_NAME> --username <USER_NAME> --password <PERSONAL_ACCESS_TOKEN> --configfile <PATH_TO_NUGET_CONFIG_FILE>
    
  3. Kör följande kommando för att publicera paketet:

    dotnet nuget push --source <SOURCE_NAME> --api-key <ANY_STRING> <PACKAGE_PATH>
    

Exempel:

dotnet nuget add source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json --name MySource --username MyUserName --password MyPersonalAccessToken --configfile ./nuget.config

dotnet nuget push --source MySource --api-key AZ nupkgs/mypackage.1.1.0.nupkg

Obs

Om din organisation använder en brandvägg eller proxyserver kontrollerar du att URL:er och IP-adresser för Azure Artifacts-domäner tillåts.