Wat is het NUPKG-bestandsformaat?
Een .nupkg-bestand slaat een gestandaardiseerd NuGet-pakket op dat wordt gebruikt om .NET-bibliotheken, tools of applicatiecomponenten te distribueren. Onder de motorkap is .nupkg een ZIP-archief gestructureerd volgens de Open Packaging Conventions (OPC) - dezelfde containerfamilie als .docx - en bevat het gecompileerde .dll-assemblies, een .nuspec-metadatamanifest, een [Content_Types].xml-descriptor en lib/-mappen die assemblies organiseren per target framework moniker (bijv. net8.0, netstandard2.0).
Wat is NuGet?
NuGet is de pakketbeheerder voor het Microsoft .NET-ontwikkelplatform, nu beheerd door de .NET Foundation. Het wordt sinds de release van Visual Studio 2012 standaard meegeleverd met Visual Studio en is ook beschikbaar als een standalone CLI. NuGet ondersteunt .NET Framework, .NET Standard en alle moderne .NET-releases.
Hoe worden .nupkg-bestanden gegenereerd?
NuGet-pakketten kunnen worden gegenereerd vanuit een projectmap met de opdracht dotnet pack (de moderne cross-platform aanpak) of de legacy nuget pack CLI. Bij gebruik van dotnet pack wordt pakketmetadata rechtstreeks uit het .csproj-projectbestand gelezen, waardoor een afzonderlijk .nuspec-manifest niet langer vereist is - hoewel er voor geavanceerde scenario's nog steeds een kan worden meegeleverd. De uitvoer is een .nupkg-archief dat klaar is voor distributie.
Hoe deel je een NuGet-pakket?
De meest populaire manier om .nupkg-bestanden te delen is door ze te publiceren op het nuget.org webplatform. Na het registreren van een account uploaden gebruikers hun .nupkg-bestand en geven ze een korte beschrijving; elk pakket ondergaat een automatische validatie voordat het wordt geïndexeerd en beschikbaar wordt gemaakt voor download. Privé-feeds gehost op Azure Artifacts, GitHub Packages of zelf-gehoste servers zijn ook gebruikelijk in bedrijfsomgevingen. Bijbehorende .snupkg-symboolpakketten kunnen samen met een .nupkg worden gepubliceerd om source-stepping in debuggers mogelijk te maken.
Beveiliging & veiligheid
RISICO: MEDIUMEen .nupkg is data, niet direct uitvoerbaar, maar het installeren van een pakket voert de code ervan uit in uw build en apps, dus het risico voor de toeleveringsketen is reëel: kwaadaardige of typosquatted pakketten op nuget.org zijn gebruikt om malware te verspreiden, en de tools/installatiescripts of MSBuild-targets van een pakket kunnen worden uitgevoerd tijdens restore/build. Installeer pakketten alleen van vertrouwde auteurs, let op typosquatted ID's, geef de voorkeur aan pakketten met veel downloads en bronlinks, en overweeg ondertekende pakketten en lock-bestanden. Het louter inspecteren van een .nupkg door deze uit te pakken is veilig - het risico komt voort uit het installeren en bouwen ertegen.
Formaatdetails
in een notendopProgramma's die NUPKG-bestanden openen
Technische details
diepe specificaties| Containerformaat | ZIP (Open Packaging Conventions / OPC) - dezelfde containerfamilie als .docx en .xlsx |
| Magic bytes | `50 4B 03 04` („PK”) - standaard ZIP local file header op offset 0 |
| MIME-type | `application/octet-stream` |
| Intern manifest | `.nuspec` XML-bestand in de root van het pakket; declareert Id, Versie, Auteurs, afhankelijkheden en doel-frameworks |
| Vereiste OPC-structuur | `[Content_Types].xml`, `_rels/`-map en ten minste één `.nuspec`-manifest |
| Conventie voor assembly-paden | `lib/<TFM>/`-mappen - bijv. `lib/net8.0/`, `lib/netstandard2.0/` - één per target framework moniker |
| Build-tools | `dotnet pack` (SDK-stijl projecten, cross-platform) of `nuget pack` (legacy NuGet CLI) |
| Openbaar register | nuget.org - meer dan 500.000 unieke pakket-ID's; pakketten passeren automatische validatie voor indexering |
| Bijbehorend symboolformaat | `.snupkg` - afzonderlijk archief met `.pdb`-symboolbestanden voor debugging op broncodeniveau |
| Pakketondertekening | X.509-certificaathandtekeningen (auteur en repository); clients verifiëren handtekeningen bij installatie |
| Ondersteuning voor target frameworks | .NET Framework, .NET Standard, .NET 5-9 en later; multi-targeting ondersteund in een enkele `.nupkg` |
| Versieschema | Semantic Versioning 2.0 (SemVer 2.0); pre-release labels ondersteund (bijv. `-alpha`, `-rc.1`) |
| Locatie pakketcache | `%USERPROFILE%\.nuget\packages\` op Windows; `~/.nuget/packages/` op Linux en macOS |
| Dependency-resolutie | Volledige transitieve afhankelijkheidsgrafiek opgelost bij `dotnet restore`; optioneel lock-bestand `packages.lock.json` voor reproduceerbare builds |
| Uitgebracht | 2010 (NuGet 1.0) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | learn.microsoft.com |
NUPKG conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over NUPKG-bestanden.