O que é o formato de ficheiro NUPKG?
Um arquivo .nupkg armazena um pacote NuGet padronizado usado para distribuir bibliotecas, ferramentas ou componentes de aplicativos .NET. Por baixo, o .nupkg é um arquivo ZIP estruturado de acordo com as Open Packaging Conventions (OPC) - a mesma família de contêineres do .docx - e contém assemblies .dll compilados, um manifesto de metadados .nuspec, um descritor [Content_Types].xml e pastas lib/ que organizam os assemblies por monikers de framework de destino (ex: net8.0, netstandard2.0).
O que é o NuGet?
O NuGet é o gerenciador de pacotes para a plataforma de desenvolvimento Microsoft .NET, agora sob a tutela da .NET Foundation. Ele vem incluído por padrão no Visual Studio desde o lançamento do Visual Studio 2012 e também está disponível como uma CLI independente. O NuGet suporta .NET Framework, .NET Standard e todas as versões modernas do .NET.
Como os arquivos .nupkg são gerados?
Os pacotes NuGet podem ser gerados a partir de uma pasta de projeto usando o comando dotnet pack (a abordagem moderna multiplataforma) ou a CLI legada nuget pack. Ao usar o dotnet pack, os metadados do pacote são lidos diretamente do arquivo de projeto .csproj, portanto, um manifesto .nuspec separado não é mais obrigatório - embora um ainda possa ser fornecido para cenários avançados. O resultado é um arquivo .nupkg pronto para distribuição.
Como compartilhar um pacote NuGet?
A forma mais popular de compartilhar arquivos .nupkg é publicando-os na plataforma web nuget.org. Após registrar uma conta, os usuários fazem o upload de seu arquivo .nupkg e fornecem uma breve descrição; cada pacote passa por uma validação automática antes de ser indexado e disponibilizado para download. Feeds privados hospedados no Azure Artifacts, GitHub Packages ou servidores auto-hospedados também são comuns em ambientes corporativos. Pacotes de símbolos .snupkg complementares podem ser publicados junto com um .nupkg para permitir a depuração passo a passo do código-fonte.
Segurança e proteção
RISCO: MEDIUMUm .nupkg é um dado, não executável diretamente, mas a instalação de um pacote executa seu código em seu build e aplicativos, portanto, o risco na cadeia de suprimentos é real: pacotes maliciosos ou com nomes similares (typosquatting) no nuget.org já foram usados para enviar malware, e ferramentas/scripts de instalação de um pacote ou alvos MSBuild podem ser executados durante a restauração/build. Instale pacotes apenas de autores confiáveis, verifique IDs suspeitos, prefira pacotes com muitos downloads e links de código-fonte, e considere pacotes assinados e arquivos de bloqueio. Apenas inspecionar um .nupkg descompactando-o é seguro - o risco vem da instalação e do build contra ele.
Detalhes do formato
em resumoProgramas que abrem arquivos NUPKG
Detalhes técnicos
especificação profunda| Formato de contêiner | ZIP (Open Packaging Conventions / OPC) - mesma família de contêineres do .docx e .xlsx |
| Magic bytes | `50 4B 03 04` («PK») - cabeçalho de arquivo local ZIP padrão no deslocamento 0 |
| Tipo MIME | `application/octet-stream` |
| Manifesto interno | Arquivo XML `.nuspec` na raiz do pacote; declara Id, Versão, Autores, dependências e frameworks de destino |
| Estrutura OPC obrigatória | `[Content_Types].xml`, pasta `_rels/` e pelo menos um manifesto `.nuspec` |
| Convenção de caminho de assembly | Pastas `lib/<TFM>/` - ex: `lib/net8.0/`, `lib/netstandard2.0/` - uma por moniker de framework de destino |
| Ferramentas de build | `dotnet pack` (projetos estilo SDK, multiplataforma) ou `nuget pack` (CLI NuGet legada) |
| Registro público | nuget.org - mais de 500.000 IDs de pacotes exclusivos; os pacotes passam por validação automatizada antes da indexação |
| Formato de símbolos complementar | `.snupkg` - arquivo separado contendo arquivos de símbolos `.pdb` para depuração em nível de código-fonte |
| Assinatura de pacote | Assinaturas de certificado X.509 (autor e repositório); os clientes verificam as assinaturas na instalação |
| Suporte a frameworks de destino | .NET Framework, .NET Standard, .NET 5-9 e posteriores; multi-targeting suportado em um único `.nupkg` |
| Esquema de versão | Semantic Versioning 2.0 (SemVer 2.0); suporte a rótulos de pré-lançamento (ex: `-alpha`, `-rc.1`) |
| Local do cache de pacotes | `%USERPROFILE%\.nuget\packages\` no Windows; `~/.nuget/packages/` no Linux e macOS |
| Resolução de dependências | Grafo de dependência transitiva completo resolvido em `dotnet restore`; arquivo de bloqueio opcional `packages.lock.json` para builds reproduzíveis |
| Lançado | 2010 (NuGet 1.0) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | learn.microsoft.com |
Conversões de NUPKG
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos NUPKG.