Seu Primeiro Pacote NuGet: Um Passo a Passo Prático

Quando você trabalha em diferentes aplicações, é comum se deparar com os mesmos problemas e as mesmas soluções aparecendo de novo e de novo. Isso faz parte do dia a dia de um desenvolvedor, mas pode ser meio cansativo. Agora, imagine se você pudesse pe…


This content originally appeared on DEV Community and was authored by Gabriel Batista

Quando você trabalha em diferentes aplicações, é comum se deparar com os mesmos problemas e as mesmas soluções aparecendo de novo e de novo. Isso faz parte do dia a dia de um desenvolvedor, mas pode ser meio cansativo. Agora, imagine se você pudesse pegar esse código repetido, organizar direitinho e usar facilmente em outros projetos. Legal, né? Neste artigo, vamos explorar como fazer isso com o NuGet.

Visão geral:

O NuGet é o gerenciador de pacotes oficial do .NET e ajuda você a empacotar, compartilhar e usar funcionalidades reutilizáveis de forma simples. Com ele, dá para organizar seu código em pacotes, reaproveitá-los em outros projetos e até colaborar de maneira mais prática com outros desenvolvedores.

"Um pacote NuGet é um arquivo ZIP com a extensão .nupkg que contém código compilado (DLLs), arquivos relacionados e um manifesto descritivo com informações como o número da versão. Desenvolvedores criam e publicam pacotes, enquanto consumidores obtêm e utilizam suas funcionalidades. O NuGet gerencia os detalhes intermediários."

Criando um projeto

Antes de começar, crie uma conta no NuGet.org. Isso será necessário para publicar seu pacote.

Crie um projeto do tipo Class Library. No terminal, execute:

dotnet new classlib --name ExamplePackage

Em seguida, abra o projeto em seu editor de preferência. Vamos criar um exemplo simples que converte um objeto em uma string JSON.

Código do pacote

Definindo os Metadados

Para criar um pacote, é necessário configurar informações importantes diretamente no arquivo .csproj do projeto. Esse arquivo define os metadados essenciais que identificarão seu pacote no NuGet.

Metadados Obrigatórios:

  • TargetFramework: Define a versão do .NET que seu projeto utilizará.
  • PackageId: Um identificador único para seu pacote.
  • Version: Versão do pacote no formato Major.Minor.Patch (SemVer).
    • Major: Alterações que quebram compatibilidade.
    • Minor: Novas funcionalidades.
    • Patch: Correções de bugs.

Metadados opcionais (não obrigatórios mas fortemente recomendados):

  • Authors Nome do autor ou autores do pacote.
  • Description: Uma breve descrição do propósito do pacote.
  • PackageLicenseExpression: Especifica a licença sob a qual o pacote é distribuído.

Atualize o arquivo .csproj para incluir essas informações:

Arquivo .csproj

Compilando o pacote

Com os metadados configurados, é hora de compilar o pacote. No terminal, execute:

dotnet pack --configuration Release

Esse comando criará um arquivo .nupkg na pasta bin/Release.

Localização do pacote compilado

Testando localmente

Configurando a Fonte Local:

Dentro do projeto, crie uma pasta para os pacotes locais:

mkdir NuGetLocal

Copie o arquivo .nupkg gerado para essa pasta:

cp bin/Release/examplePackage.Convert.1.0.0.nupkg NuGetLocal

Adicione a pasta como uma fonte NuGet:

dotnet nuget add source /caminho/completo/para/NuGetLocal --name NuGetLocal

Consumindo o Pacote no Projeto:

Você pode criar um projeto console para testes:

dotnet new console --name ExamplePackageTest
cd ExamplePackageTest

Use o comando dotnet add package para instalar o pacote:

dotnet add package examplePackage.Convert --version 1.0.0

Testando o Pacote

Abra o arquivo Program.cs do projeto de teste e use o pacote:

Importando pacote da fonte local

Utilizando pacote da fonte local

Publicação

Após validar seu pacote, é hora de publicá-lo. Acesse sua conta em NuGet.org, vá até o seu perfil e crie uma nova chave.

Gerando chave para publicação de pacotes

No terminal, use o comando abaixo para publicar seu pacote no NuGet:

dotnet nuget push bin\Release\examplePackage.Convert.1.0.0.nupkg --api-key SuaAPIkEY --source https://api.nuget.org/v3/index.json

Pronto, se tudo estiver correto após alguns minutos, o pacote estará disponível no NuGet.org.

Pacote publicado

Conclusão

Agora que você aprendeu a criar, testar e publicar pacotes NuGet, pode começar a criar os seus próprios pacotes para facilitar o seu trabalho e, quem sabe, ajudar outras pessoas com as suas soluções.

Materiais Relacionados e Referências


This content originally appeared on DEV Community and was authored by Gabriel Batista


Print Share Comment Cite Upload Translate Updates
APA

Gabriel Batista | Sciencx (2025-01-03T05:33:35+00:00) Seu Primeiro Pacote NuGet: Um Passo a Passo Prático. Retrieved from https://www.scien.cx/2025/01/03/seu-primeiro-pacote-nuget-um-passo-a-passo-pratico/

MLA
" » Seu Primeiro Pacote NuGet: Um Passo a Passo Prático." Gabriel Batista | Sciencx - Friday January 3, 2025, https://www.scien.cx/2025/01/03/seu-primeiro-pacote-nuget-um-passo-a-passo-pratico/
HARVARD
Gabriel Batista | Sciencx Friday January 3, 2025 » Seu Primeiro Pacote NuGet: Um Passo a Passo Prático., viewed ,<https://www.scien.cx/2025/01/03/seu-primeiro-pacote-nuget-um-passo-a-passo-pratico/>
VANCOUVER
Gabriel Batista | Sciencx - » Seu Primeiro Pacote NuGet: Um Passo a Passo Prático. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/01/03/seu-primeiro-pacote-nuget-um-passo-a-passo-pratico/
CHICAGO
" » Seu Primeiro Pacote NuGet: Um Passo a Passo Prático." Gabriel Batista | Sciencx - Accessed . https://www.scien.cx/2025/01/03/seu-primeiro-pacote-nuget-um-passo-a-passo-pratico/
IEEE
" » Seu Primeiro Pacote NuGet: Um Passo a Passo Prático." Gabriel Batista | Sciencx [Online]. Available: https://www.scien.cx/2025/01/03/seu-primeiro-pacote-nuget-um-passo-a-passo-pratico/. [Accessed: ]
rf:citation
» Seu Primeiro Pacote NuGet: Um Passo a Passo Prático | Gabriel Batista | Sciencx | https://www.scien.cx/2025/01/03/seu-primeiro-pacote-nuget-um-passo-a-passo-pratico/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.