Publicar pacotes NuGet na linha de comando usando NuGet.exe

Serviços Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Este artigo orienta você pela conexão com seus pacotes de feed e publicação usando dois fluxos de autenticação: o provedor de credenciais Azure Artifacts para feeds em sua própria organização e um PAT (token de acesso pessoal) para feeds hospedados em uma organização diferente.

Pré-requisitos

Configurar o provedor de credenciais Azure Artifacts

O provedor de credenciais Azure Artifacts habilita a autenticação segura para seus feeds de Azure Artifacts. Para usá-lo com nuget.exe, primeiro, é necessário adicioná-lo ao caminho de busca de plug-ins do NuGet. Para obter detalhes, consulte Instalação e descoberta do Plug-in. Depois que o plug-in for adicionado, siga as etapas de instalação do sistema operacional:

Use um dos seguintes métodos para instalar o provedor de credenciais Azure Artifacts:

Instalação manual

  1. Baixe a versão mais recente Microsoft.NetFx48.NuGet.CredentialProvider.zip.

  2. Extraia os arquivos compactados.

  3. Copie a netfx pasta do arquivo extraído para %UserProfile%/.nuget/plugins/. A netfx pasta é necessária para nuget.exe compatibilidade.

Instalar usando o script auxiliar

Como alternativa, você pode usar o script auxiliar automatizado para uma instalação simplificada. Verifique se você tem o PowerShell 5.1 ou posterior e execute:

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

Para obter mais informações, consulte o repositório Azure Artifacts Credential Provider.

Conectar-se a um feed

Antes de publicar seus pacotes, configure seu projeto e conecte-se ao feed da seguinte maneira:

  1. Entre em sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Artefatos e, em seguida, selecione o feed no menu suspenso.

  3. Selecione Conectar para alimentare selecione NuGet.exe no painel de navegação esquerdo.

  4. Adicione um arquivo nuget.config ao seu projeto, na mesma pasta do arquivo .csproj ou .sln. Cole o snippet XML fornecido em seu arquivo. O snippet deve ser semelhante ao seguinte:

    • Feed da organização com escopo:

      <?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 do projeto com escopo:

      <?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. Entre no servidor do Azure DevOps e navegue até o projeto.

  2. Selecione Artefatos e, em seguida, selecione o feed.

  3. Selecione Conectar ao Feede selecione NuGet.exe no painel de navegação esquerdo.

  4. Adicione um arquivo nuget.config ao seu projeto, na mesma pasta que o arquivo .csproj ou .sln, e cole o trecho de XML fornecido nesse arquivo.

Publicar em um feed na mesma organização

Depois de configurar nuget.config e autenticar usando o provedor de credenciais Azure Artifacts, execute o comando a seguir para publicar um pacote no feed. Substitua os marcadores de posição pelos valores apropriados:

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

Exemplo:

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

Nota

O provedor de credenciais Azure Artifacts manipula a autenticação real para o push, mas o NuGet ainda requer um -ApiKey valor para aceitar o comando. Azure Artifacts ignora o valor fornecido, portanto, qualquer cadeia de caracteres não úmida funciona.

Publicar em um feed em outra organização

Se o feed de destino estiver em uma organização de Azure DevOps diferente, crie um PAT nessa organização e adicione o feed como uma origem em seu nuget.config arquivo.

  1. Crie um token de acesso pessoal (PAT) na organização de destino com o escopo Empacotamento>Ler e gravar.

  2. Execute o comando a seguir para adicionar o feed como uma origem. Esse comando adiciona seu PAT a nuget.config; portanto, mantenha o arquivo em local seguro e não o envie para o controle de versão.

    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. Publique o pacote usando o nome de origem que você acabou de adicionar.

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

Exemplo:

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 sua organização usa um firewall ou servidor proxy, permita URLs de domínio e endereços IP do Azure Artifacts.

Troubleshooting

O prompt de autenticação não aparece

Verifique se o provedor de credenciais Azure Artifacts está instalado e se você está usando a versão 4.8.0.5385 do NuGet ou posterior. Para obter as etapas de configuração, consulte Conectar-se aos feeds do Azure Artifacts com o NuGet.exe.

A publicação falha porque a versão já existe

As versões do pacote em Azure Artifacts são imutáveis. Depois de publicar uma versão, você não poderá substituí-la nem reutilizar o mesmo número de versão, mesmo se excluir o pacote. Atualize a versão do pacote, recompile o pacote e, em seguida, publique-o novamente.

A publicação falha por trás de um firewall ou proxy

Permita as URLs de domínio e os endereços IP do Azure Artifacts e tente novamente a operação de publicação.

A publicação falha com um erro 403

Esse erro geralmente significa que sua conta não tem permissões de publicação no feed. Você precisa, pelo menos, da função feed Publisher (Colaborador) para enviar pacotes por push. Peça a um proprietário do feed para atualizar a sua função e tente novamente.