Publicar pacotes NuGet

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

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

Publicar no nuget.org

Para publicar no nuget.org, inicie sessão no nuget.org com uma conta Microsoft e utilize-a para criar uma conta gratuita do nuget.org. Siga as instruções em Adicionar uma nova conta individual.

Screenshot that shows the NuGet sign in link.

Assim que tiver uma conta, você poderá publicar um pacote no nuget.org usando o portal da Web nuget.org, a CLI do 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 para o portal da Web nuget.org

Para carregar um pacote no site nuget.org:

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

    Screenshot that shows the Upload dialog on nuget.org

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

  2. Se o nome do pacote estiver disponível, nuget.org abrirá uma seção Verificar em que é possível examinar os metadados do manifesto do pacote. Se você incluiu um arquivo LEIAME no pacote, selecione Visualizar para garantir que todo o conteúdo seja renderizado corretamente.

    Para alterar os metadados, edite seu arquivo de projeto ou arquivo .nuspec, recompile, recrie o pacote e carregue-o novamente.

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

Enviar por push usando uma linha de comando

Para enviar pacotes por push para nuget.org com uma linha de comando, você pode usar o dotnet.exe ou nuget.exe v4.1.0 ou superior, os quais implementam os protocolos NuGet necessários. Para saber mais, confira Protocolos do NuGet.

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

Criar uma chave para a API

  1. Entre em sua conta de nuget.org ou crie uma conta caso ainda não tenha uma.

  2. Selecione seu 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.

    Screenshot that shows the new API key with the Copy link.

Importante

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

Os Escopos permitem criar chaves de API separadas para finalidades diferentes. Cada chave tem um período de expiração e pode ter o escopo definido para pacotes ou padrões glob específicos. Você também define o escopo de cada chave para operações específicas: enviar novos pacotes e versões de pacotes, enviar por push apenas novas versões de pacotes ou remover da lista.

Por meio de escopo, é possível criar chaves de API para diferentes pessoas que gerenciam os pacotes para a sua organização, de modo que elas tenham somente as permissões necessárias.

Para saber mais, confira Chaves de API com escopo.

Usar a CLI do dotnet

Na pasta que contém o arquivo .nupkg, execute o comando a seguir. Especifique o nome do arquivo .nupkg e substitua o valor da chave pela chave da 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 janela de 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, confira dotnet nuget push.

Observação

Para evitar que seu pacote de teste fique permaneça em nuget.org, você pode enviá-lo por push para o site de teste de nuget.org em https://int.nugettest.org. Observe que os pacotes carregados para 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 obtida em nuget.org:

    nuget setApiKey <your_API_key>
    

    Esse comando armazena a chave de API em sua configuração do NuGet para que você não precise inserir a chave de API novamente 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 nuget sources.

  2. Transmita o pacote por push executando o seguinte comando:

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

Publicar com o Azure Pipelines

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

Publicar um pacote assinado

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

Limites de tamanho de pacote

O 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 transmitido por meio da linha de comando, a seguinte saída será produzida:

  RequestEntityTooLarge https://www.nuget.org/api/v2/package/ 13903ms
error: Response status code does not indicate success: 413 (The package file exceeds the size limit. Please try again.).

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. Quando o pacote passar por todas as verificações de validação, poderá levar algum tempo para que ele seja indexado e exibido nos resultados da pesquisa. Enquanto o pacote está sendo indexado, ele aparece em Pacotes não listados e é possível ver a seguinte mensagem na página do pacote:

Screenshot of a message indicating that a package isn't yet published.

Após a conclusão da validação e da indexação, você receberá um email informando que o pacote foi publicado com êxito. Se a verificação de validação do pacote falhar, a página do pacote será atualizada para exibir o erro associado e você também receberá um email de notificação.

A validação e a indexação do pacote geralmente demoram menos de 15 minutos. Se a publicação do pacote estiver demorando mais do que o esperado, verifique o status de nuget.org 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 o nuget.org usando o link Contatar o suporte na página do pacote.

Para ver o status do pacote, selecione Gerenciar pacotes sob o nome da conta no canto superior direito de 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 pacote têm permissões totais para o pacote, incluindo adicionar e remover outros proprietários e publicar atualizações.

Embora cada arquivo .nuspec do pacote NuGet defina os autores do pacote, a galeria do nuget.org não usa 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 SetApiKey ou nuget push.

Para alterar a propriedade de um pacote:

  1. Inicie sessão em nuget.org com a conta que é a proprietária atual do pacote.

  2. Selecione o nome da conta, selecione Gerenciar pacotes e expanda Pacotes publicados.

  3. Selecione o pacote que você deseja gerenciar e, no lado direito, selecione Gerenciar proprietários.

  4. Na página de 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 o respectivo nome de usuário e uma mensagem e selecionando Adicionar.

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

Para transferir a propriedade, como quando a propriedade muda ou um pacote é publicado na conta errada, adicione o novo proprietário. Assim que confirmarem a propriedade, eles poderão remover o antigo proprietário da lista.

Para atribuir a propriedade a uma empresa ou grupo, crie uma conta do nuget.org com um alias de email que é encaminhado para os membros da equipe apropriada. Por exemplo, vários pacotes do Microsoft ASP.NET são propriedades conjuntas 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ê é o proprietário legítimo de um pacote e precisa recuperar a propriedade, use o formulário de contato em nuget.org para explicar a situação para a equipe do NuGet. A equipe segue um processo para verificar sua propriedade, incluindo a tentativa de localizar o proprietário existente, e pode enviar um novo convite para se tornar o proprietário do pacote.

Próximas etapas