Ler em inglês

Partilhar via


Início Rápido: Criar e publicar um pacote NuGet usando o Visual Studio (somente Windows)

Com o Microsoft Visual Studio, você pode criar um pacote NuGet de uma biblioteca de classes do .NET e publicá-lo em nuget.org usando uma ferramenta da CLI.

O início rápido é somente para usuários do Windows. Caso você esteja usando um Mac, utilize a .NET CLI .

Pré-requisitos

  • Instale o Visual Studio 2022 para Windows com uma carga de trabalho relacionada ao .NET Core.

    Você pode instalar a edição 2022 Community gratuitamente de visualstudio.microsoft.comou usar a edição Professional ou Enterprise.

    O Visual Studio 2017 e versões posteriores inclui automaticamente os recursos do NuGet quando você instala uma carga de trabalho relacionada ao .NET.

  • Instale a CLI do .NET se ela ainda não estiver instalada.

    Para o Visual Studio 2017 e posterior, a CLI do .NET é instalada automaticamente com qualquer carga de trabalho relacionada ao .NET Core. Caso contrário, instale o SDK do .NET Core para obter a CLI do .NET. A CLI do .NET é necessária para projetos do .NET que usam o formato estilo SDK (atributo SDK). O modelo de biblioteca de classes .NET padrão no Visual Studio 2017 e posterior usa o atributo SDK.

    Importante

    Caso você esteja trabalhando com um projeto fora do estilo SDK, siga os procedimentos em Criar e publicar um pacote do .NET Framework (Visual Studio) para criar e publicar o pacote. Para este artigo, a CLI do .NET é recomendada. Embora você possa publicar qualquer pacote NuGet usando a CLI do NuGet, algumas das etapas neste artigo são específicas para projetos no estilo SDK e a CLI do .NET. A CLI do NuGet é usada para projetos não estilo SDK (normalmente .NET Framework).

  • Registre-se para uma conta gratuita no nuget.org se você ainda não tiver uma. Você deve registrar e confirmar a conta antes de carregar um pacote NuGet.

  • Instale a CLI do NuGet baixando-a de nuget.org. Adicione o arquivo nuget.exe a uma pasta adequada e adicione essa pasta à variável de ambiente PATH.

Criar um projeto de biblioteca de classes

Você pode usar um projeto existente da Biblioteca de Classes do .NET para o código que deseja empacotar ou criar um da seguinte maneira:

  1. No Visual Studio, selecione Arquivo>Novo>Projeto.

  2. Na janela Criar um novo projeto, selecione C#, Windowse Biblioteca nas listas suspensas.

  3. Na lista resultante de modelos de projeto, selecione Biblioteca de Classes (com a descrição, um projeto para criar uma biblioteca de classes direcionada ao .NET ou ao .NET Standard) e selecione Próximo.

  4. Na janela Configurar seu novo projeto, insira AppLogger para o nome do projeto, e selecione Avançar.

  5. Na janela Informações adicionais, selecione um Frameworkapropriado e, em seguida, selecione Criar.

    Se você não tiver certeza de qual estrutura selecionar, a mais recente será uma boa opção e poderá ser facilmente alterada mais tarde. Para obter informações sobre qual estrutura usar, consulte Quando direcionar para o .NET 5.0 ou .NET 6.0 vs. .NET Standard.

  6. Para garantir que o projeto foi criado corretamente, selecione Compilar>Compilar Solução. A DLL é encontrada dentro da pasta Debug (ou Release, se você criar essa configuração nesse caso).

  7. (Opcional) Para este início rápido, você não precisa escrever nenhum código adicional para o pacote NuGet porque a biblioteca de classes de modelo é suficiente para criar um pacote. No entanto, se você quiser algum código funcional para o pacote, inclua o seguinte código:

    C#
    namespace AppLogger
    {
        public class Logger
        {
            public void Log(string text)
            {
                Console.WriteLine(text);
            }
        }
    }
    

Configurar propriedades do pacote

Depois de criar seu projeto, você pode configurar as propriedades do pacote NuGet seguindo estas etapas:

  1. Selecione seu projeto em Gerenciador de Soluçõese, em seguida, selecione Projeto><nome do projeto> Propriedades, onde <nome do projeto> é o nome do seu projeto.

  2. Expanda o nó Pacote e selecione Geral.

    O nó Pacote aparece apenas para projetos no estilo SDK no Visual Studio. Se você estiver trabalhando com um projeto de estilo não SDK (normalmente .NET Framework), migrar o projeto, ou consulte Criar e publicar um pacote do .NET Framework para instruções passo a passo.

    captura de tela mostrando as propriedades do pacote NuGet em um projeto do Visual Studio.

  3. Para pacotes criados para consumo público, preste atenção especial à propriedade Marcas, pois as marcas ajudam outras pessoas a encontrar seu pacote e a entender o que ele faz.

  4. Forneça ao seu pacote uma ID exclusiva do pacote e preencha todas as outras propriedades desejadas. Para obter uma tabela que mostra como as propriedades do MSBuild (projetos no estilo SDK) são mapeadas para propriedades de arquivo .nuspec, consulte os destinos de empacotamento . Para obter uma descrição das propriedades do arquivo .nuspec , consulte a referência de arquivo .nuspec . Todas essas propriedades entram no manifesto .nuspec que o Visual Studio cria para o projeto.

    Importante

    Você deve fornecer ao pacote um identificador exclusivo em nuget.org ou qualquer host que você esteja usando. Caso contrário, ocorrerá um erro. Para este início rápido, recomendamos incluir de exemplo ou test no nome, pois a etapa de publicação torna o pacote publicamente visível.

  5. (Opcional) Para ver as propriedades diretamente no arquivo de projeto AppLogger.csproj, selecione Project>Editar arquivo de projeto.

    A guia AppLogger.csproj está carregando.

    Essa opção está disponível a partir do Visual Studio 2017 para projetos que usam o atributo estilo SDK. Para versões anteriores do Visual Studio, você deve selecionar Project>Descarregar Projeto antes de editar o arquivo de projeto.

Executar o comando pack

Para criar um pacote NuGet do seu projeto, siga estas etapas:

  1. Selecione criar>do Configuration Manager e, em seguida, defina o de configuração da solução ativa para de versão.

  2. Selecione o projeto AppLogger no Gerenciador de Soluções, e depois selecione Pack.

    O Visual Studio compila o projeto e cria o arquivo .nupkg.

  3. Examine a janela saída para obter detalhes, que contém o caminho para o arquivo de pacote. Neste exemplo, o assembly compilado está em bin\Release\net6.0 como convém a um alvo .NET 6.0:

    Output
    1>------ Build started: Project: AppLogger, Configuration: Release Any CPU ------
    1>AppLogger -> d:\proj\AppLogger\AppLogger\bin\Release\net6.0\AppLogger.dll
    1>Successfully created package 'd:\proj\AppLogger\AppLogger\bin\Release\AppLogger.1.0.0.nupkg'.
    ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
    
  4. Se você não vir o comando Pack no menu, seu projeto provavelmente não é um projeto no estilo SDK e você precisa usar a CLI do NuGet. migre o projeto e use a CLI do .NET, ou consulte Criar e publicar um pacote do .NET Framework para instruções passo a passo.

(Opcional) Gerar pacote durante o processo de compilação

Você pode configurar o Visual Studio para gerar automaticamente o pacote NuGet ao compilar o projeto:

  1. Selecione seu projeto no do Gerenciador de Soluções e selecione nome do projeto><> Propriedades, em que <nome do projeto> é o nome do projeto (AppLogger, nesse caso).

  2. Expanda o nó Pacote, selecione Gerale, em seguida, selecione Gerar pacote NuGet durante a compilação.

    Captura de tela mostrando as propriedades do pacote com o pacote Gerar NuGet na compilação selecionada.

Nota

Quando você gera automaticamente o pacote, o tempo extra para empacotar aumenta o tempo de build geral do projeto.

(Opcional) Empacotar com o MSBuild

Como alternativa ao uso do comando de menu Pack, o NuGet 4.x+ e o MSBuild 15.1+ dão suporte a um destino pack quando o projeto contém os dados de pacote necessários:

  1. Com o projeto aberto no do Gerenciador de Soluções, abra um prompt de comando selecionando Ferramentas>Linha de Comando>Prompt de Comando do Desenvolvedor.

    O prompt de comando é aberto no diretório do projeto.

  2. Execute o seguinte comando: msbuild -t:pack.

Para obter mais informações, consulte Criar um pacote usando o MSBuild.

Publicar o pacote

Depois de criar um arquivo .nupkg, publique-o no nuget.org usando a CLI do .NET ou a CLI do NuGet, juntamente com uma chave de API adquirida de nuget.org.

Nota

  • Nuget.org verifica todos os pacotes carregados em busca de vírus e rejeita os pacotes se encontrar vírus. Nuget.org também verifica todos os pacotes listados existentes periodicamente.

  • Os pacotes publicados em nuget.org são publicamente visíveis para outros desenvolvedores, a menos que você os desliste. Para hospedar pacotes de forma privada, consulte Hospedar seus próprios feeds do NuGet.

Adquirir sua chave de API

Antes de publicar seu pacote NuGet, crie uma chave de 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 Criare forneça um nome para sua chave.

  4. Em Selecionar 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 para copiar.

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 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 de chave da API, será necessário regenerar a chave para copiá-la. Você também pode remover a chave de API se não quiser mais enviar pacotes por push.

O de 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 globais. Você também define o escopo de cada chave para operações específicas: enviar novos pacotes e versões, enviar 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 tenham apenas as permissões necessárias.

Para obter mais informações, consulte chaves de API com escopo.

Publicar com a CLI do .NET ou a CLI do NuGet

Cada uma das ferramentas da CLI a seguir permite enviar um pacote por push para o servidor e publicá-lo. Selecione a aba para sua ferramenta CLI, do CLI .NET ou do CLI NuGet.

Usar a CLI do .NET (dotnet.exe) é a alternativa recomendada para usar a CLI do NuGet.

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.

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

O resultado apresenta os resultados do processo de publicação:

Output
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.

Nota

Se quiser evitar que o pacote de teste esteja visível em nuget.org, você pode fazer o upload para o site de teste em nuget.org no https://int.nugettest.org. Observe que os pacotes enviados para int.nugettest.org podem não ser preservados.

Publicar erros

Erros do comando push normalmente indicam o problema. Por exemplo, você pode ter esquecido de atualizar o número de versão em seu projeto, portanto, está tentando publicar um pacote que já existe.

Você também verá erros se a chave de API for inválida ou expirada ou se tentar publicar um pacote usando um identificador que já existe no host. Suponha, por exemplo, que o identificador AppLogger-test já exista em nuget.org. Se você tentar publicar um pacote com esse identificador, o comando push apresentará o seguinte erro:

Output
Response status code does not indicate success: 403 (The specified API key is invalid,
has expired, or does not have permission to access the specified package.).

Se você receber esse erro, verifique se está usando uma chave de API válida que não expirou. Se você estiver, o erro indica que o identificador do pacote já existe no host. Para corrigir o erro, altere o identificador do pacote para ser exclusivo, recompile o projeto, recrie o arquivo .nupkg e repita o comando push.

Gerenciar o pacote publicado

Quando o pacote for publicado com êxito, você receberá um email de confirmação. Para ver o pacote que você acabou de publicar, no nuget.org, selecione seu nome de usuário no canto superior direito da tela e selecione Gerenciar Pacotes.

Nota

Pode levar algum tempo para que seu pacote seja indexado e apareça nos resultados da pesquisa em que outras pessoas possam encontrá-lo. Durante esse tempo, seu pacote aparece em pacotes não listadose a página do pacote mostra a seguinte mensagem:

Captura de tela mostrando a mensagem de publicação exibida quando você carrega um pacote para nuget.org.

Agora você publicou um pacote NuGet para nuget.org que outros desenvolvedores podem usar em seus projetos.

Se você criou um pacote que não é útil (como este pacote de exemplo criado com uma biblioteca de classes vazia) ou decide que não deseja que o pacote fique visível, você pode deslistar pacote para ocultá-lo dos resultados da pesquisa:

  1. Depois que o pacote for exibido em Pacotes Publicados na página Gerenciar Pacotes, selecione o ícone de lápis ao lado do item na listagem de pacotes.

    Captura de tela que mostra o ícone Editar para uma listagem de pacotes no nuget.org.

  2. Na próxima página, selecione Listing, desmarque a caixa de seleção List in search results e selecione Save.

    Captura de tela que mostra a desativação da caixa de seleção Lista para um pacote no nuget.org.

O pacote agora aparece em Pacotes Não Listados em Gerenciar Pacotes e não aparece mais nos resultados da pesquisa.

Nota

Para evitar que seu pacote de teste esteja ativo no nuget.org, você pode carregá-lo no site de teste nuget.org no endereço https://int.nugettest.org. Observe que os pacotes carregados em int.nugettest.org podem não ser preservados.

Adicionar um arquivo readme ou outro arquivo

Para especificar diretamente os arquivos a serem incluídos no pacote, edite o arquivo de projeto e adicione a propriedade content:

XML
<ItemGroup>
  <Content Include="readme.txt">
    <Pack>true</Pack>
    <PackagePath>\</PackagePath>
  </Content>
</ItemGroup>

Neste exemplo, a propriedade especifica um arquivo chamado readme.txt na raiz do projeto. O Visual Studio exibe o conteúdo desse arquivo como texto sem formatação imediatamente após a instalação do pacote. Os arquivos readme não são exibidos para pacotes instalados como dependências. Por exemplo, aqui está o README do pacote HtmlAgilityPack:

Output
1 ----------------------------------------------------
2 ---------- Html Agility Pack Nuget Readme ----------
3 ----------------------------------------------------
4
5 ----Silverlight 4 and Windows Phone 7.1+ projects-----
6 To use XPATH features: System.Xml.Xpath.dll from the 3 Silverlight 4 SDK must be referenced.
7 This is normally found at
8 %ProgramFiles(x86)%\Microsoft SDKs\Microsoft SDKs\Silverlight\v4.0\Libraries\Client
9 or
10 %ProgramFiles%\Microsoft SDKs\Microsoft SDKs\Silverlight\v4.0\Libraries\Client
11
12 ----Silverlight 5 projects-----
13 To use XPATH features: System.Xml.Xpath.dll from the Silverlight 5 SDK must be referenced.
14 This is normally found at
15 %ProgramFiles(x86)%\Microsoft SDKs\Microsoft SDKs\Silverlight\v5.0\Libraries\Client
16 or
17 %ProgramFiles%\Microsoft SDKs\Microsoft SDKs\Silverlight\v5.0\Libraries\Client

Nota

Se você adicionar apenas readme.txt à raiz do projeto sem incluí-la na propriedade content do arquivo de projeto, ela não será incluída no pacote.

Encontre vídeos do NuGet no Canal 9 e no YouTube.

Parabéns por criar um pacote NuGet usando uma biblioteca de classes do .NET do Visual Studio. Avance para o próximo artigo para saber como criar um pacote NuGet com o .NET Framework do Visual Studio.

Para explorar mais que o NuGet tem a oferecer, consulte os seguintes artigos: