Publicando pacotesPublishing packages

Após você ter criado um pacote e ter seu arquivo .nupkg, é um processo simples disponibilizá-lo para outros desenvolvedores, públicos ou privados:Once you have created a package and have your .nupkg file in hand, it's a simple process to make it available to other developers, either publicly or privately:

  • Pacotes públicos são disponibilizados para todos os desenvolvedores globalmente por meio do nuget.org, conforme descrito neste artigo (requer NuGet 4.1.0 ou posterior).Public packages are made available to all developers globally through nuget.org as described in this article (requires NuGet 4.1.0+).
  • Os pacotes privados estão disponíveis apenas para uma equipe ou uma organização hospedando-os em um compartilhamento de arquivo, em um servidor NuGet privado, no Azure Artifacts ou em um repositório de terceiros, como myget, ProGet, Nexus Repository e Artifactory.Private packages are available to only a team or organization, by hosting them either a file share, a private NuGet server, Azure Artifacts, or a third-party repository such as myget, ProGet, Nexus Repository, and Artifactory. Para ver detalhes adicionais, consulte Visão geral de hospedagem de pacotes.For additional details, see Hosting Packages Overview.

Este artigo aborda a publicação no nuget.org. Para saber sobre a publicação no Azure Artifacts, confira Gerenciamento de pacotes.This article covers publishing to nuget.org; for publishing to Azure Artifacts, see Package Management.

Publicar no nuget.orgPublish to nuget.org

No nuget.org, entre com uma conta da Microsoft. Será solicitado que você registre essa conta em nuget.org.For nuget.org, you must sign in with a Microsoft account, with which you'll be asked to register the account with nuget.org.

Localização de entrada do NuGet

Em seguida, você poderá carregar o pacote por meio do portal da Web nuget.org, enviar por push ao nuget.org usando a linha de comando (exige nuget.exe 4.1.0 ou posterior) ou publicar como parte de um processo de CI/CD por meio do Azure DevOps Services, conforme descrito nas seções a seguir.Next, you can either upload the package through the nuget.org web portal, push to nuget.org from the command line (requires nuget.exe 4.1.0+) , or publish as part of a CI/CD process through Azure DevOps Services, as described in the following sections.

Portal da Web: use a guia Carregar Pacote no nuget.orgWeb portal: use the Upload Package tab on nuget.org

  1. Selecione Upload no menu superior de nuget.org e navegue até a localização do pacote.Select Upload on the top menu of nuget.org and browse to the package location.

    Carregue um pacote em nuget.org

  2. nuget.org informa se o nome do pacote está disponível.nuget.org tells you if the package name is available. Se não estiver, altere o identificador de pacote no seu projeto, recompile e tente carregar novamente.If it isn't, change the package identifier in your project, rebuild, and try the upload again.

  3. Se o nome do pacote estiver disponível, nuget.org abrirá uma seção Verify (Verificar) em que é possível examinar os metadados do manifesto do pacote.If the package name is available, nuget.org opens a Verify section in which you can review the metadata from the package manifest. Para alterar os metadados, edite seu projeto (arquivo de projeto ou arquivo .nuspec), recompile, recrie o pacote e carregue-o novamente.To change any of the metadata, edit your project (project file or .nuspec file), rebuild, recreate the package, and upload again.

  4. Em Import Documentation (Importar Documentação), você pode colar Markdown, apontar para seus documentos com uma URL ou carregar um arquivo de documentação.Under Import Documentation you can paste Markdown, point to your docs with a URL, or upload a documentation file.

  5. Quando todas as informações estiverem prontas, selecione o botão Submit (Enviar)When all the information is ready, select the Submit button

Linha de comandoCommand line

Para enviar pacotes por push para o nuget.org, primeiro você precisa de uma chave de API, que é criada em nuget.org. Você deve usar o dotnet.exe (.NET Core) ou nuget.exe v 4.1.0 ou superior, que implementa os protocolos NuGet necessários.To push packages to nuget.org, you first need an API key, which is created on nuget.org. You must use either dotnet.exe (.NET Core), or nuget.exe v4.1.0 or above, which implement the required NuGet protocols. Para obter mais informações, consulte .NET Core, nuget.exee protocolos NuGet.For more information, see .NET Core, nuget.exe, and NuGet protocols.

Criar chaves de APICreate API keys

  1. Entre em sua conta do nuget.org ou crie uma conta, se você não tiver uma.Sign into your nuget.org account or create an account if you don't have one already.

    Para saber mais sobre como criar sua conta, confira Contas individuais.For more information on creating your account, see Individual accounts.

  2. Selecione seu nome de usuário (no canto superior direito) e selecione Chaves de API.Select your user name (on the upper right), then select API Keys.

  3. Selecione Criar, forneça um nome para sua chave, selecione Selecionar Escopos > Push.Select Create, provide a name for your key, select Select Scopes > Push. Digite * para Padrão Glob e selecione Criar.Enter * for Glob pattern, then select Create. (Veja mais sobre escopos abaixo).(See below for more about scopes.)

  4. Após a criação da chave, selecione Copiar para recuperar a chave de acesso que você precisa na CLI:Once the key is created, select Copy to retrieve the access key you need in the CLI:

    Copiando a chave de API para a área de transferência

  5. Importante: salve sua chave em um local seguro, pois não será possível copiar a chave novamente no futuro.Important: Save your key in a secure location because you cannot copy the key again later on. Se você retornar à página da chave de API, será necessário gerar novamente a chave para copiá-la.If you return to the API key page, you need to regenerate the key to copy it. Também é possível remover a chave de API, se você não quiser mais efetuar push de pacotes por meio da CLI.You can also remove the API key if you no longer want to push packages via the CLI.

Os escopos permitem criar chaves de API separadas para finalidades diferentes.Scoping allows you to create separate API keys for different purposes. Cada chave tem seu período de expiração e pode ter o escopo definido para pacotes específicos (ou padrões glob).Each key has its expiration timeframe and can be scoped to specific packages (or glob patterns). Cada chave também pode ter o escopo definido para operações específicas: push de novos pacotes e atualizações, push somente de atualizações ou remoção de lista.Each key is also scoped to specific operations: push of new packages and updates, push of updates only, or delisting. 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.Through scoping, you can create API keys for different people who manage packages for your organization such that they have only the permissions they need. Para saber mais, confira Chaves de API com escopo.For more information, see scoped API keys.

Publicar com dotnet nuget pushPublish with dotnet nuget push

  1. Altere para a pasta que contém o arquivo .nupkg.Change to the folder containing the .nupkg file.

  2. Execute o seguinte comando, especificando o nome do pacote (ID de pacote exclusiva) e substituindo o valor da chave pela chave da API:Run the following command, specifying your package name (unique package ID) and replacing the key value with your API key:

    dotnet nuget push AppLogger.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json
    
  3. O dotnet exibe os resultados do processo de publicação:dotnet displays the results of the publishing process:

    info : Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
    info :   PUT https://www.nuget.org/api/v2/package/
    info :   Created https://www.nuget.org/api/v2/package/ 12620ms
    info : Your package was pushed.
    

Veja dotnet nuget push.See dotnet nuget push.

Publicar com nuget pushPublish with nuget push

  1. Em um prompt de comando, execute o seguinte comando, substituindo <your_API_key> pela chave obtida em nuget.org:At a command prompt, run the following command, replacing <your_API_key> with the key obtained from 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 repetir essa etapa novamente no mesmo computador.This command stores your API key in your NuGet configuration so that you don't need to repeat this step again on the same computer.

    Observação

    A chave de API não é usada para autenticação com o feed particular.API key is not used for authenticating with the private feed. Consulte o nuget sources comando para gerenciar as credenciais de autenticação com a origem.Refer to nuget sources command to manage credentials for authenticating with the source. As chaves de API podem ser obtidas dos servidores NuGet individuais.API keys can be obtained from the individual NuGet servers. Para criar e manange APIKeys para nuget.org, consulte criar chaves de API.To create and manange APIKeys for nuget.org refer to Create API keys.

  2. Efetue push do pacote para a Galeria do NuGet usando o seguinte comando:Push your package to NuGet Gallery using the following command:

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

Publicar pacotes assinadosPublish signed packages

Para enviar pacotes assinados, primeiro você deve registrar o certificado usado para assinar os pacotes.To submit signed packages, you must first register the certificate used for signing the packages.

Aviso

O nuget.org rejeita os pacotes que não atendem aos requisitos de pacotes assinados.nuget.org rejects packages that don't satisfy the signed package requirements.

Validação e indexação de pacotePackage validation and indexing

Os pacotes enviados por push para nuget.org passam por várias validações, como verificações de vírus.Packages pushed to nuget.org undergo several validations, such as virus checks. (Todos os pacotes em nuget.org são examinados periodicamente).(All packages on nuget.org are periodically scanned.)

Quando o pacote tiver passado todas as verificações de validação, pode levar algum tempo para que ele seja indexado e exibido nos resultados da pesquisa.When the package has passed all validation checks, it might take a while for it to be indexed and appear in search results. Após a conclusão da indexação, você receberá um email confirmando que o pacote foi publicado com êxito.Once indexing is complete, you receive an email confirming that the package was successfully published. Se a verificação de validação do pacote falhar, a página de detalhes do pacote será atualizada para exibir o erro associado e você também receberá uma notificação por email.If the package fails a validation check, the package details page will update to display the associated error and you also receive an email notifying you about it.

A validação e indexação do pacote geralmente leva menos de 15 minutos.Package validation and indexing usually takes under 15 minutes. Se a publicação do pacote estiver demorando mais do que o esperado, visite status.NuGet.org para verificar se o NuGet.org está enfrentando interrupções.If the package publishing is taking longer than expected, visit status.nuget.org to check if nuget.org is experiencing any interruptions. Se todos os sistemas estiverem operacionais e o pacote não tiver sido publicado com êxito dentro de uma hora, faça logon no nuget.org e entre em contato conosco usando o link Entre em contato com o suporte na página do pacote.If all systems are operational and the package hasn't been successfully published within an hour, please login to nuget.org and contact us using the Contact Support link on the package page.

Para ver o status de um pacote, selecione gerenciar pacotes sob o nome da sua conta em NuGet.org. Você receberá um email de confirmação quando a validação for concluída.To see the status of a package, select Manage packages under your account name on nuget.org. You receive a confirmation email when validation is complete.

Observe que pode levar algum tempo para o pacote ser indexado e aparecer nos resultados da pesquisa em que outras pessoas podem encontrá-lo e, durante esse período, você verá a seguinte mensagem na página do seu pacote:Note that it might take a while for your package to be indexed and appear in search results where others can find it, during which time you see the following message on your package page:

Mensagem que indica que um pacote ainda não está publicado

Azure DevOps Services (CI/CD)Azure DevOps Services (CI/CD)

Se você enviar pacotes por push ao nuget.org usando os Azure DevOps Services como parte do processo de integração/implantação contínua, será necessário usar o nuget.exe 4.1 ou superior nas tarefas do NuGet.If you push packages to nuget.org using Azure DevOps Services as part of your Continuous Integration/Deployment process, you must use nuget.exe 4.1 or above in the NuGet tasks. Veja mais detalhes em Usando o NuGet mais recente no seu build (blog do Microsoft DevOps).Details can be found on Using the latest NuGet in your build (Microsoft DevOps blog).

Gerenciando os proprietários de pacote no nuget.orgManaging package owners on nuget.org

Embora cada arquivo .nuspec do pacote do NuGet defina os autores do pacote, a galeria do nuget.org não usa metadados para definir a propriedade.Although each NuGet package's .nuspec file defines the package's authors, the nuget.org gallery does not use that metadata to define ownership. Em vez disso, o nuget.org atribui a propriedade inicial à pessoa que publica o pacote.Instead, nuget.org assigns initial ownership to the person who publishes the package. Este é o usuário conectado que carregou o pacote por meio da interface do usuário do nuget.org ou os usuários cuja chave de API foi usada com nuget SetApiKey ou nuget push.This is either the logged-in user who uploaded the package through the nuget.org UI, or the users whose API key was used with nuget SetApiKey or nuget push.

Todos os proprietários de pacote têm permissões totais para o pacote, incluindo adicionar e remover outros proprietários e publicar atualizações.All package owners have full permissions for the package, including adding and removing other owners, and publishing updates.

Para alterar a propriedade de um pacote, faça o seguinte:To change ownership of a package, do the following:

  1. Entre em nuget.org com a conta que é o proprietário atual do pacote.Sign in to nuget.org with the account that is the current owner of the package.
  2. Selecione o nome da conta, selecione Manage packages (Gerenciar pacotes) e expanda Published Packages (Pacotes publicados).Select your account name, select Manage packages , and expand Published Packages .
  3. Selecione o pacote que você deseja gerenciar e, no lado direito, selecione Manage owners (Gerenciar proprietários).Select on the package you want to manage, then on the right side select Manage owners .

Daqui, você tem várias opções:From here you have several options:

  1. Remova qualquer proprietário listado em Current Owners (Proprietários atuais).Remove any owner listed under Current Owners .
  2. Adicione um proprietário em Add Owner (Adicionar proprietário) inserindo o nome de usuário dele, uma mensagem e selecionando Add (Adicionar).Add an owner under Add Owner by entering their user name, a message, and selecting Add . Essa ação envia um email ao novo coproprietário com um link de confirmação.This action sends an email to that new co-owner with a confirmation link. Depois de confirmado, essa pessoa tem permissões completas para adicionar e remover os proprietários.Once confirmed, that person has full permissions to add and remove owners. (Até a confirmação, a página Current Owners (Proprietários atuais) indica “aprovação pendente” para essa pessoa).(Until confirmed, the Current Owners section indicates pending approval for that person.)
  3. Para transferir a propriedade (como quando a propriedade muda ou um pacote foi publicado na conta errada), adicione o novo proprietário e, depois da propriedade ser confirmada, será possível remover você da lista.To transfer ownership (as when ownership changes or a package was published under the wrong account), add the new owner, and once they've confirmed ownership they can remove you from the list.

Para atribuir a propriedade a uma empresa ou grupo, crie uma conta do nuget.org usando um alias de email que é encaminhado para os membros da equipe apropriada.To assign ownership to a company or group, create a nuget.org account using an email alias that is forwarded to the appropriate team members. Por exemplo, vários pacotes do Microsoft ASP.NET são propriedades conjuntas de contas da microsoft e aspnet, que simplesmente esses aliases.For example, various Microsoft ASP.NET packages are co-owned by the microsoft and aspnet accounts, which simply such aliases.

Recuperar a propriedade do pacoteRecovering package ownership

Ocasionalmente, um pacote pode não ter um proprietário ativo.Occasionally, a package may not have an active owner. Por exemplo, o proprietário original deixou a empresa que produz o pacote, as credenciais do nuget.org foram perdidas ou erros anteriores na galeria deixaram pacote sem proprietário.For example, the original owner may have left the company that produces the package, nuget.org credentials are lost, or earlier bugs in the gallery left a package ownerless.

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.If you are the rightful owner of a package and need to regain ownership, use the contact form on nuget.org to explain your situation to the NuGet team. Em seguida, seguimos um processo para confirmar a sua propriedade do pacote, incluindo tentando localizar o proprietário existente por meio da URL do projeto do pacote, Twitter, email ou outros meios.We then follow a process to verify your ownership of the package, including trying to locate the existing owner through the package's Project URL, Twitter, email, or other means. Porém, se tudo o mais falhar, nós podemos lhe enviar um novo convite para se tornar um proprietário.But if all else fails, we can send you a new invite to become an owner.