Publicar pacotes do NuGet

Depois de criar um pacote NuGet e ter um arquivo .nupkg , você poderá disponibilizar o pacote para outros desenvolvedores de forma pública ou privada. Este artigo descreve como compartilhar pacotes públicos globalmente por meio de nuget.org.

Você também pode disponibilizar pacotes privados apenas para uma equipe ou organização hospedando-os em um compartilhamento de arquivos, um servidor NuGet privado ou um repositório de terceiros, como myget, ProGet, Nexus Repository ou Artifactory. Para obter mais informações, consulte Hospedar seus próprios feeds do NuGet. Para publicar com o Azure Artifacts, consulte Publicar pacotes no NuGet.org.

Publicar no nuget.org

Para publicar no nuget.org, entre no nuget.org com uma conta microsoft e use-a para criar uma conta de nuget.org gratuita. Siga as instruções em Adicionar uma nova conta individual.

Captura de tela que mostra o link de entrada do NuGet.

Depois de ter uma conta, você pode publicar um pacote no nuget.org usando o portal da Web nuget.org, a CLI dotnet ou a CLI do NuGet versão 4.1.0 ou superior. Você também pode publicar pacotes por meio do Azure Pipelines.

Carregar no portal da Web nuget.org

Para carregar um pacote no site do nuget.org:

  1. Selecione Carregar no menu superior em nuget.org, navegue até o pacote no computador e selecione Abrir.

    Captura de tela que mostra a caixa de diálogo Carregar no nuget.org

    Se a ID do pacote já existir no nuget.org, você receberá um erro. Altere o identificador de pacote em seu projeto, reempacote e tente carregar novamente.

  2. Se o nome do pacote estiver disponível, a seção Verificar será aberta para que você possa examinar os metadados do manifesto do pacote. Se você incluiu um arquivo readme no pacote, selecione Visualizar para garantir que todo o conteúdo seja renderizado corretamente.

    Para alterar qualquer um dos metadados, edite o arquivo de projeto ou o arquivo .nuspec , recompile, repacote e carregue novamente.

  3. Quando todas as informações estiverem prontas, selecione Enviar.

Efetuar push usando uma linha de comando

Para enviar pacotes por push para nuget.org com uma linha de comando, você pode usar dotnet.exe ou nuget.exe v4.1.0 ou superior, que implementam os protocolos NuGet necessários. Para obter mais informações, consulte Protocolos NuGet.

Para usar qualquer uma das linhas de comando, primeiro você precisa obter uma chave de API de nuget.org.

Criar uma chave para a API

  1. Entre em sua conta nuget.org ou crie uma conta se você ainda não tiver uma.

  2. Selecione o nome de usuário no canto superior direito e selecione Chaves de API.

  3. Selecione Criar e forneça um nome para sua chave.

  4. Em Selecionar Escopos, selecione Push.

  5. Em Selecionar Pacotes>Padrão glob, insira *.

  6. Selecione Criar.

  7. Selecione Copiar para copiar a nova chave.

    Captura de tela que mostra a nova chave de API com o link Copiar.

Importante

  • Sempre mantenha a chave de API em segredo. A chave de API é como uma senha que permite que qualquer pessoa gerencie pacotes em seu nome. Exclua ou regenere sua chave de API se ela for revelada acidentalmente.
  • Salve sua chave em um local seguro, pois não é possível copiar a chave novamente mais tarde. Se você retornar à página da chave de API, será necessário gerar novamente a chave para copiá-la. Você também pode remover a chave de API se não quiser mais enviar pacotes por push.

O escopo permite criar chaves de API separadas para diferentes finalidades. Cada chave tem um período de expiração e você pode definir o escopo da chave para pacotes específicos ou padrões glob. Você também define o escopo de cada chave para operações específicas: enviar por push novos pacotes e versões de pacote, enviar por push apenas novas versões de pacote ou deslistar.

Por meio do escopo, você pode criar chaves de API para diferentes pessoas que gerenciam pacotes para sua organização para que elas tenham apenas as permissões necessárias.

Para saber mais, confira Chaves de API com escopo.

Usar a CLI dotnet

Na pasta que contém o arquivo .nupkg , execute o comando a seguir. Especifique seu nome de arquivo .nupkg e substitua o valor da chave pela chave de API.

dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json

A saída mostra os resultados do processo de publicação:

Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
  Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.

Para obter mais informações, consulte dotnet nuget push.

Observação

Se você quiser evitar que o pacote de teste esteja ativo no nuget.org, poderá enviar por push para o site de teste do nuget.org em https://int.nugettest.org. Observe que os pacotes carregados em int.nugettest.org podem não ser preservados.

Usar a CLI do NuGet

  1. Em um prompt de comando, execute o seguinte comando, substituindo <your_API_key> pela chave que você obteve de nuget.org:

    nuget setApiKey <your_API_key>
    

    Esse comando armazena sua chave de API na configuração do NuGet para que você não precise inserir a chave de API novamente no mesmo computador.

    Observação

    Essa chave de API não é usada para autenticar com feeds privados. Para gerenciar credenciais para autenticação com essas fontes, consulte o comando fontes de nuget.

  2. Envie o pacote por push usando o seguinte comando:

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

Publicar com o Azure Pipelines

Você pode enviar pacotes por push para nuget.org com o Azure Pipelines como parte do processo de CI/CD (integração contínua/implantação contínua). Para obter mais informações, consulte Publicar pacotes NuGet com o Azure Pipelines.

Publicar um pacote assinado

Para enviar um pacote assinado, primeiro você deve registrar o certificado usado para assinar o pacote. Se você não atender aos requisitos do pacote assinado, nuget.org rejeitará o pacote.

Limites de tamanho do pacote

Nuget.org tem um limite de tamanho de pacote de cerca de 250 MB. Quando um pacote que excede esse limite é carregado, o seguinte erro é exibido:

O arquivo de pacote excede o limite de tamanho. Tente novamente.

Se esse pacote for enviado por push da linha de comando, a seguinte saída será produzida:

Erro RequestEntityTooLarge https://www.nuget.org/api/v2/package/ 13903ms: o código de status da resposta não indica êxito: 413 (o arquivo de pacote excede o limite de tamanho. Tente novamente.).

Se você estiver recebendo esses erros, considere revisar o conteúdo do pacote para reduzir seu tamanho. Se você estiver empacotando símbolos de depuração em seu pacote, considere publicá-los separadamente. Outros ativos podem ser publicados separadamente como um ou mais pacotes de dependência para espalhá-los em partes menores.

Validação e indexação de pacote

Os pacotes enviados por push para nuget.org passam por várias validações, como verificações de vírus, e os pacotes existentes são verificados periodicamente. Quando o pacote passa por todas as verificações de validação, pode demorar um pouco para ser indexado e aparecer nos resultados da pesquisa. Enquanto o pacote está sendo indexado, ele aparece em Pacotes não listados e você vê a seguinte mensagem na página do pacote:

Captura de tela de uma mensagem indicando que um pacote ainda não foi publicado.

Depois que a validação e a indexação forem concluídas, você receberá um email informando que o pacote foi publicado com êxito. Se o pacote falhar em uma verificação de validação, a página do pacote será atualizada para exibir o erro associado e você receberá um email de notificação.

A validação e a indexação do pacote geralmente levam menos de 15 minutos. Se a publicação do pacote estiver demorando mais do que o esperado, verifique nuget.org status em status.nuget.org. Se todos os sistemas estiverem operacionais e o pacote não for publicado com êxito dentro de uma hora, entre em contato com nuget.org usando o link Entrar em contato com o suporte na página do pacote.

Para ver o status do pacote, selecione Gerenciar pacotes no nome da sua conta no canto superior direito do nuget.org e selecione o pacote em Pacotes Publicados ou Pacotes Não Listados.

Gerenciar proprietários de pacotes em nuget.org

Os proprietários de pacotes têm permissões completas para o pacote, incluindo adicionar e remover outros proprietários e publicar atualizações.

Embora o arquivo .nuspec do pacote NuGet defina os autores do pacote, nuget.org não usa esses metadados para definir a propriedade. Em vez disso, nuget.org atribui a propriedade à pessoa que publica o pacote, seja o usuário conectado que carregou o pacote ou o usuário cuja chave de API foi usada com dotnet push, nuget SetApiKeyou nuget push.

Para alterar a propriedade de um pacote:

  1. Entre no nuget.org com a conta que atualmente possui o pacote.

  2. Selecione o nome da sua conta no canto superior direito, selecione Gerenciar pacotes e expanda Pacotes Publicados.

  3. Selecione o pacote que você deseja gerenciar e, no lado direito da página do pacote, selecione Gerenciar pacote.

  4. Na página gerenciamento de pacotes, selecione Proprietários.

  5. Execute uma das seguintes ações:

    • Selecione Remover para remover o proprietário atual.

    • Adicione um proprietário em Adicionar proprietário inserindo seu nome de usuário e uma mensagem e selecionando Adicionar.

      Essa ação envia um email para o novo coproprietário com um link de confirmação. Depois de confirmado, essa pessoa tem permissões completas para adicionar e remover os proprietários. Até ser confirmada, a seção Proprietários atuais mostra aprovação pendente para essa pessoa.

Para transferir a propriedade, como quando a propriedade é alterada ou um pacote é publicado na conta errada, adicione o novo proprietário. Depois de confirmar a propriedade, eles poderão remover o antigo proprietário da lista.

Para atribuir a propriedade a uma empresa ou grupo, crie uma conta nuget.org com um alias de email que encaminhe para os membros apropriados da equipe. Por exemplo, vários pacotes do Microsoft ASP.NET são de propriedade conjunta das contas microsoft e aspnet .

Ocasionalmente, um pacote pode não ter um proprietário ativo. Por exemplo, o proprietário original pode ter deixado a empresa que produziu o pacote. Se você for o proprietário legítimo de um pacote e precisar recuperar a propriedade, use o formulário de contato no nuget.org para explicar sua situação à equipe do NuGet. A equipe segue um processo para verificar sua propriedade, incluindo tentar localizar o proprietário existente e pode enviar um novo convite para se tornar o proprietário do pacote.

Próximas etapas