Qu'est-ce que le format de fichier NUPKG ?
Un fichier .nupkg stocke un paquet NuGet standardisé utilisé pour distribuer des bibliothèques, des outils ou des composants d'application .NET. Sous le capot, le .nupkg est une archive ZIP structurée selon les Open Packaging Conventions (OPC) - la même famille de conteneurs que le .docx - et contient des assemblages .dll compilés, un manifeste de métadonnées .nuspec, un descripteur [Content_Types].xml et des dossiers lib/ qui organisent les assemblages par identifiant de framework cible (par exemple net8.0, netstandard2.0).
Qu'est-ce que NuGet ?
NuGet est le gestionnaire de paquets pour la plateforme de développement Microsoft .NET, désormais géré par la .NET Foundation. Il est intégré par défaut à Visual Studio depuis la version 2012 et est également disponible en tant qu'interface en ligne de commande (CLI) autonome. NuGet prend en charge .NET Framework, .NET Standard et toutes les versions modernes de .NET.
Comment les fichiers .nupkg sont-ils générés ?
Les paquets NuGet peuvent être générés à partir d'un dossier de projet à l'aide de la commande dotnet pack (l'approche moderne multiplateforme) ou de l'ancien CLI nuget pack. Lors de l'utilisation de dotnet pack, les métadonnées du paquet sont lues directement depuis le fichier de projet .csproj, de sorte qu'un manifeste .nuspec séparé n'est plus nécessaire - bien qu'il puisse toujours être fourni pour des scénarios avancés. Le résultat est une archive .nupkg prête pour la distribution.
Comment partager un paquet NuGet ?
Le moyen le plus courant de partager des fichiers .nupkg est de les publier sur la plateforme web nuget.org. Après avoir créé un compte, les utilisateurs téléchargent leur fichier .nupkg et fournissent une courte description ; chaque paquet subit une validation automatique avant d'être indexé et mis à disposition pour le téléchargement. Les flux privés hébergés sur Azure Artifacts, GitHub Packages ou des serveurs auto-hébergés sont également courants en entreprise. Des paquets de symboles compagnons .snupkg peuvent être publiés aux côtés d'un .nupkg pour permettre le débogage pas à pas du code source.
Sécurité et sûreté
RISQUE : MEDIUMUn fichier .nupkg est une donnée, pas un exécutable direct, mais l'installation d'un paquet exécute son code dans vos builds et applications. Le risque pour la chaîne d'approvisionnement est réel : des paquets malveillants ou pratiquant le typosquattage sur nuget.org ont été utilisés pour diffuser des logiciels malveillants, et les outils/scripts d'installation ou les cibles MSBuild d'un paquet peuvent s'exécuter pendant la restauration ou la construction. Installez des paquets uniquement provenant d'auteurs de confiance, surveillez les identifiants suspects, privilégiez les paquets avec de nombreux téléchargements et liens vers le code source, et envisagez l'utilisation de paquets signés et de fichiers de verrouillage. Inspecter simplement un .nupkg en le décompressant est sûr - le risque provient de l'installation et de la compilation avec celui-ci.
Détails du format
en brefProgrammes qui ouvrent les fichiers NUPKG
Détails techniques
spécifications approfondies| Format de conteneur | ZIP (Open Packaging Conventions / OPC) - même famille de conteneurs que .docx et .xlsx |
| Signature de fichier (magic bytes) | `50 4B 03 04` (« PK ») - en-tête de fichier local ZIP standard à l'offset 0 |
| Type MIME | `application/octet-stream` |
| Manifeste interne | Fichier XML `.nuspec` à la racine du paquet ; déclare l'Id, la Version, les Auteurs, les dépendances et les frameworks cibles |
| Structure OPC requise | `[Content_Types].xml`, dossier `_rels/` et au moins un manifeste `.nuspec` |
| Convention de chemin d'assemblage | Dossiers `lib/<TFM>/` - ex: `lib/net8.0/`, `lib/netstandard2.0/` - un par identifiant de framework cible |
| Outils de construction | `dotnet pack` (projets de style SDK, multiplateforme) ou `nuget pack` (CLI NuGet hérité) |
| Registre public | nuget.org - plus de 500 000 identifiants de paquets uniques ; les paquets passent une validation automatisée avant l'indexation |
| Format de symboles compagnon | `.snupkg` - archive séparée contenant les fichiers de symboles `.pdb` pour le débogage au niveau du code source |
| Signature de paquet | Signatures par certificat X.509 (auteur et dépôt) ; les clients vérifient les signatures lors de l'installation |
| Prise en charge des frameworks cibles | .NET Framework, .NET Standard, .NET 5-9 et ultérieurs ; multi-ciblage pris en charge dans un seul `.nupkg` |
| Système de versionnage | Semantic Versioning 2.0 (SemVer 2.0) ; étiquettes de pré-version prises en charge (ex: `-alpha`, `-rc.1`) |
| Emplacement du cache des paquets | `%USERPROFILE%\.nuget\packages\` sur Windows ; `~/.nuget/packages/` sur Linux et macOS |
| Résolution des dépendances | Graphe complet des dépendances transitives résolu lors du « dotnet restore » ; fichier de verrouillage optionnel `packages.lock.json` pour des builds reproductibles |
| Publié | 2010 (NuGet 1.0) |
| Standard ouvert | Oui · libre de droits |
| Spécification | learn.microsoft.com |
Conversions NUPKG
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers NUPKG.