Che cos'è il formato di file NUPKG?
Un file .nupkg memorizza un pacchetto NuGet standardizzato utilizzato per distribuire librerie, strumenti o componenti applicativi .NET. Sotto il cofano, .nupkg è un archivio ZIP strutturato secondo le Open Packaging Conventions (OPC) - la stessa famiglia di contenitori di .docx - e contiene assembly .dll compilati, un manifesto di metadati .nuspec, un descrittore [Content_Types].xml e cartelle lib/ che organizzano gli assembly per moniker del framework di destinazione (es. net8.0, netstandard2.0).
Cos'è NuGet?
NuGet è il gestore di pacchetti per la piattaforma di sviluppo Microsoft .NET, ora gestito dalla .NET Foundation. È incluso di default in Visual Studio dal rilascio di Visual Studio 2012 ed è disponibile anche come CLI standalone. NuGet supporta .NET Framework, .NET Standard e tutte le versioni moderne di .NET.
Come vengono generati i file .nupkg?
I pacchetti NuGet possono essere generati da una cartella di progetto usando il comando dotnet pack (l'approccio moderno multipiattaforma) o la CLI legacy nuget pack. Quando si usa dotnet pack, i metadati del pacchetto vengono letti direttamente dal file di progetto .csproj, quindi un manifesto .nuspec separato non è più richiesto - sebbene possa ancora essere fornito per scenari avanzati. L'output è un archivio .nupkg pronto per la distribuzione.
Come condividere un pacchetto NuGet?
Il modo più popolare per condividere i file .nupkg è pubblicarli sulla piattaforma web nuget.org. Dopo aver registrato un account, gli utenti caricano il proprio file .nupkg e forniscono una breve descrizione; ogni pacchetto viene sottoposto a una validazione automatica prima di essere indicizzato e reso disponibile per il download. Feed privati ospitati su Azure Artifacts, GitHub Packages o server self-hosted sono comuni anche in ambienti aziendali. I pacchetti di simboli complementari .snupkg possono essere pubblicati insieme a un .nupkg per consentire il debug passo-passo del codice sorgente.
Sicurezza e incolumità
RISCHIO: MEDIUMUn .nupkg è un file di dati, non direttamente eseguibile, ma l'installazione di un pacchetto esegue il suo codice nelle build e nelle app, quindi il rischio per la supply-chain è reale: pacchetti malevoli o con nomi simili (typosquatting) su nuget.org sono stati usati per distribuire malware, e gli script di installazione o i target MSBuild di un pacchetto possono essere eseguiti durante il ripristino/build. Installa pacchetti solo da autori fidati, fai attenzione agli ID sospetti, preferisci pacchetti con molti download e link ai sorgenti, e considera l'uso di pacchetti firmati e file di blocco. La semplice ispezione di un .nupkg tramite decompressione è sicura - il rischio deriva dall'installazione e dalla compilazione con esso.
Dettagli del formato
in sintesiProgrammi che aprono file NUPKG
Dettagli tecnici
specifiche approfondite| Formato contenitore | ZIP (Open Packaging Conventions / OPC) - stessa famiglia di contenitori di .docx e .xlsx |
| Magic bytes | `50 4B 03 04` («PK») - intestazione file locale ZIP standard all'offset 0 |
| Tipo MIME | `application/octet-stream` |
| Manifesto interno | File XML `.nuspec` alla radice del pacchetto; dichiara Id, Versione, Autori, dipendenze e framework di destinazione |
| Struttura OPC richiesta | `[Content_Types].xml`, cartella `_rels/` e almeno un manifesto `.nuspec` |
| Convenzione percorso assembly | Cartelle `lib/<TFM>/` - es. `lib/net8.0/`, `lib/netstandard2.0/` - una per ogni moniker del framework di destinazione |
| Strumenti di build | `dotnet pack` (progetti in stile SDK, multipiattaforma) o `nuget pack` (CLI NuGet legacy) |
| Registro pubblico | nuget.org - oltre 500.000 ID pacchetto univoci; i pacchetti superano la validazione automatica prima dell'indicizzazione |
| Formato simboli complementare | `.snupkg` - archivio separato contenente file di simboli `.pdb` per il debug a livello di sorgente |
| Firma del pacchetto | Firme con certificato X.509 (autore e repository); i client verificano le firme all'installazione |
| Supporto target framework | .NET Framework, .NET Standard, .NET 5-9 e successivi; multi-targeting supportato in un singolo `.nupkg` |
| Schema di versionamento | Semantic Versioning 2.0 (SemVer 2.0); etichette pre-release supportate (es. `-alpha`, `-rc.1`) |
| Percorso cache pacchetti | `%USERPROFILE%\.nuget\packages\` su Windows; `~/.nuget/packages/` su Linux e macOS |
| Risoluzione dipendenze | Grafo completo delle dipendenze transitive risolto al comando `dotnet restore`; file di blocco opzionale `packages.lock.json` per build riproducibili |
| Rilasciato | 2010 (NuGet 1.0) |
| Standard aperto | Sì · royalty-free |
| Specifica | learn.microsoft.com |
Conversioni NUPKG
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file NUPKG.