Partilhar via


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 do 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 Hospede os seus próprios feeds NuGet. Para publicar com Azure Artifacts, consulte Publicar pacotes em NuGet.org.

Publicar em nuget.org

Para publicar no nuget.org, inicie sessão no nuget.org com uma conta Microsoft e utilize-a para criar uma conta 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 para 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 para o portal web do nuget.org

Para carregar um pacote no site da nuget.org:

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

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

    Se o ID do pacote já existir no nuget.org, você receberá um erro. Altere o identificador do 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 revisar os metadados do manifesto do pacote. Se você incluiu um arquivo Leiame em seu pacote, selecione Visualizar para garantir que todo o conteúdo seja renderizado corretamente.

    Para alterar qualquer um dos metadados, edite seu arquivo de projeto ou arquivo .nuspec , reconstrua, reempacote e carregue novamente.

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

Executar o push usando uma linha de comandos

Para fazer push de pacotes para o nuget.org com uma linha de comando, pode-se usar ou 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 linha de comando, primeiro você precisa obter uma chave de API do nuget.org.

Criar uma chave de API

  1. Inicie sessão na sua conta nuget.org ou crie uma conta , se ainda não tiver uma.

  2. Selecione seu nome de usuário no canto superior direito e, em seguida, selecione Chaves de API.

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

  4. Em Selecione escopos, selecione Push.

  5. Em Selecionar Pacotes>Padrão Glob, digite *.

  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

  • Mantenha sempre a sua chave API em segredo. A chave da 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.
  • Guarde a sua chave num local seguro, porque não pode copiá-la novamente mais tarde. Se você retornar à página de chave da API, precisará gerar novamente a chave para copiá-la. Você também pode remover a chave da API se não quiser mais enviar pacotes.

Definição de escopo permite criar diferentes chaves de API para várias 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 de glob. Você também define o escopo de cada chave para operações específicas: envie novos pacotes e versões de pacotes, envie apenas novas versões de pacotes ou cancele a lista.

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 obter mais informações, consulte Chaves de API delimitadas.

Utilizar a ferramenta de linha de comandos dotnet

Na pasta que contém o arquivo .nupkg , execute o seguinte comando. 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 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 seu pacote de teste esteja ativo no nuget.org, você pode enviar por push para o local de teste 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 de nuget.org:

    nuget setApiKey <your_API_key>
    

    Este comando armazena sua chave de API em sua 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 nuget sources.

  2. Empurre o pacote 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 seu processo de integração contínua/implantação contínua (CI/CD). Para obter mais informações, consulte Publicar pacotes NuGet com o Azure Pipelines.

Publicar um pacote assinado

Para enviar um pacote assinado, você deve primeiro 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 de embalagem

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.

Caso tal pacote seja enviado a partir 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. Caso estejas a embalar símbolos de depuração no teu pacote, considera publicá-los separadamente. Outros ativos podem ser publicados separadamente como um ou mais pacotes de dependência para distribuí-los em partes menores.

Validação e indexação de pacotes

Os pacotes enviados 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 em todas as verificações de validação, pode levar algum tempo 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 ecrã de uma mensagem a indicar que um pacote ainda não foi publicado.

Quando a validação e a indexação estiverem concluídas, você receberá um e-mail 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 e-mail de notificação.

A validação e indexação de pacotes geralmente levam menos de 15 minutos. Se a publicação de pacotes 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 Entre em contato com o suporte na página do pacote.

Para ver o status do pacote, selecione Gerenciar pacotes sob o 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 no nuget.org

Os proprietários de pacotes têm permissões totais 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. Inicie sessão 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 deseja gerenciar e, no lado direito da página do pacote, selecione Gerenciar pacote.

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

  5. Efetue 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.

      Esta ação envia um e-mail para o novo coproprietário com um link de confirmação. Uma vez confirmada, essa pessoa tem permissões totais para adicionar e remover proprietários. Até ser confirmada, a seção Proprietários atuais mostra a 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. Depois de confirmar a propriedade, eles podem remover o proprietário antigo da lista.

Para atribuir a propriedade a uma empresa ou grupo, crie uma conta de nuget.org com um alias de e-mail que encaminha para os membros da equipe apropriados. 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 a embalagem. Se você for o legítimo proprietário 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 a tentativa de localizar o proprietário existente, e pode enviar um novo convite para se tornar o proprietário do pacote.

Próximos passos