Pacotes NuGet e versões
ResumoNuGet é o gerenciador de pacotes do .NET. Você adiciona bibliotecas de terceiros (ou da própria Microsoft) com
dotnet add package, e as versões ficam registradas no.csprojpara builds reprodutíveis.
1. Objetivos de Aprendizagem#
- Adicionar, atualizar e remover pacotes NuGet.
- Entender versionamento semântico de pacotes.
- Conhecer o conceito de restore e cache.
2. Pré-requisitos#
- Ter um projeto criado (tópico 2.1).
3. Conceito#
NuGet distribui bibliotecas empacotadas (.nupkg) a partir do repositório oficial nuget.org. Cada PackageReference no .csproj fixa nome + versão. O porquê: reaproveitar código pronto e testado (logging, JSON, EF Core…) em vez de reinventar.
As versões seguem SemVer (MAJOR.MINOR.PATCH):
- MAJOR — mudanças incompatíveis.
- MINOR — novos recursos compatíveis.
- PATCH — correções compatíveis.
O dotnet restore baixa os pacotes (para um cache global em ~/.nuget/packages) antes de compilar; build e run fazem isso implicitamente.
4. Mão na Massa#
4.1. Setup#
dotnet new console -n Catalog.NugetDemo
cd Catalog.NugetDemo
4.2. Implementação Passo a Passo#
- Adicione um pacote (versão mais recente estável):
dotnet add package Serilog
- Adicione uma versão específica:
dotnet add package Serilog --version 4.0.0
- Liste e remova:
dotnet list package
dotnet remove package Serilog
- Force o restore:
dotnet restore
4.3. Executando#
dotnet build
5. Exemplo Completo#
Adicionar Serilog, usar um tipo dele no código e compilar demonstra o ciclo completo: add package grava o PackageReference, o restore baixa, o build compila.
6. Boas Práticas e Armadilhas#
| Faça | Evite |
|---|---|
Fixar versões explícitas no .csproj | Depender de "última versão" implícita em produção |
Revisar pacotes com dotnet list package --vulnerable | Adicionar pacotes de fontes não confiáveis |
Alinhar versões de pacotes Microsoft.Extensions.* ao TFM | Misturar versões 8.x e 9.x sem necessidade |
Atençãopacotes trazem dependências transitivas. Um único
add packagepode puxar dezenas de outras bibliotecas — revise antes de adotar.
7. Segurança e Produção#
- Rode
dotnet list package --vulnerablee--outdatedperiodicamente. Pacotes desatualizados são vetor comum de vulnerabilidades. - Prefira fontes confiáveis (nuget.org oficial ou feed interno auditado).
8. Exercícios#
- Fácil: adicione e remova um pacote.
- Médio: fixe uma versão específica e confirme no
.csproj. - Desafio: rode
dotnet list package --vulnerable --include-transitivenum projeto real.
9. Resumo#
NuGet gerencia dependências via PackageReference (nome + versão SemVer). restore baixa para um cache global; mantenha versões fixas e audite vulnerabilidades.
10. Próximos Passos#
Com o ambiente e os projetos dominados, começamos a sintaxe C#.
11. Referências#
- Microsoft Learn — O que é NuGet
- Microsoft Learn — dotnet add package
- Microsoft Learn — Auditoria de pacotes NuGet