Was ist das NUPKG-Dateiformat?
Eine .nupkg-Datei enthält ein standardisiertes NuGet-Paket zur Verteilung von .NET-Bibliotheken, -Tools oder -Anwendungskomponenten. Im Kern ist .nupkg ein ZIP-Archiv, das gemäß Open Packaging Conventions (OPC) strukturiert ist - dieselbe Containerfamilie wie .docx - und kompilierte .dll-Assemblys, ein .nuspec-Metadaten-Manifest, einen [Content_Types].xml-Deskriptor sowie lib/-Ordner enthält, die Assemblys nach Zielframework-Moniker (z. B. net8.0, netstandard2.0) organisieren.
Was ist NuGet?
NuGet ist der Paketmanager für die Microsoft .NET-Entwicklungsplattform, der jetzt von der .NET Foundation betreut wird. Er ist seit Visual Studio 2012 standardmäßig in Visual Studio integriert und auch als eigenständige CLI verfügbar. NuGet unterstützt .NET Framework, .NET Standard und alle modernen .NET-Versionen.
Wie werden .nupkg-Dateien erstellt?
NuGet-Pakete können aus einem Projektordner mit dem Befehl dotnet pack (der moderne plattformübergreifende Ansatz) oder der älteren nuget pack-CLI erstellt werden. Bei Verwendung von dotnet pack werden die Paketmetadaten direkt aus der .csproj-Projektdatei gelesen, sodass kein separates .nuspec-Manifest mehr erforderlich ist - obwohl eines für erweiterte Szenarien noch bereitgestellt werden kann. Das Ergebnis ist ein zur Verteilung bereites .nupkg-Archiv.
Wie teilt man ein NuGet-Paket?
Die beliebteste Methode zur Freigabe von .nupkg-Dateien ist die Veröffentlichung auf der nuget.org-Plattform. Nach der Registrierung laden Benutzer ihre .nupkg-Datei hoch und geben eine kurze Beschreibung an; jedes Paket durchläuft eine automatische Validierung, bevor es indiziert und zum Download bereitgestellt wird. Private Feeds auf Azure Artifacts, GitHub Packages oder selbst gehosteten Servern sind in Unternehmensumgebungen ebenfalls verbreitet. Begleitende .snupkg-Symbolpakete können zusammen mit einem .nupkg veröffentlicht werden, um das Durchsteppen des Quellcodes in Debuggern zu ermöglichen.
Sicherheit
RISIKO: MEDIUMEine .nupkg-Datei sind Daten und nicht direkt ausführbar, aber die Installation eines Pakets führt dessen Code in Ihrem Build und Ihren Anwendungen aus, sodass das Supply-Chain-Risiko real ist: Bösartige oder typosquatted Pakete auf nuget.org wurden bereits zum Verbreiten von Malware genutzt, und die tools/-Installationsskripte oder MSBuild-Targets eines Pakets können während Restore/Build ausgeführt werden. Installieren Sie Pakete nur von vertrauenswürdigen Autoren, achten Sie auf typosquatted IDs, bevorzugen Sie Pakete mit vielen Downloads und Quellcode-Links, und erwägen Sie signierte Pakete und Lock-Dateien. Das bloße Untersuchen einer .nupkg durch Entpacken ist sicher - das Risiko entsteht durch Installation und Verwendung im Build.
Formatdetails
kurz gefasstProgramme zum Öffnen von NUPKG-Dateien
Technische Details
technische Spezifikation| Containerformat | ZIP (Open Packaging Conventions / OPC) - dieselbe Containerfamilie wie .docx und .xlsx |
| Magic Bytes | `50 4B 03 04` („PK“) - Standard-ZIP-Lokaldatei-Header bei Offset 0 |
| MIME-Typ | `application/octet-stream` |
| Internes Manifest | `.nuspec`-XML-Datei im Paketstamm; deklariert Id, Version, Autoren, Abhängigkeiten und Zielframeworks |
| Erforderliche OPC-Struktur | `[Content_Types].xml`, `_rels/`-Ordner und mindestens ein `.nuspec`-Manifest |
| Assembly-Pfadkonvention | `lib/<TFM>/`-Ordner - z. B. `lib/net8.0/`, `lib/netstandard2.0/` - einer pro Zielframework-Moniker |
| Build-Werkzeuge | `dotnet pack` (SDK-Projekte, plattformübergreifend) oder `nuget pack` (ältere NuGet CLI) |
| Öffentliche Registrierung | nuget.org - über 500 000 eindeutige Paket-IDs; Pakete durchlaufen eine automatische Validierung vor der Indizierung |
| Symbol-Begleitformat | `.snupkg` - separates Archiv mit `.pdb`-Symboldateien für Quellcode-Level-Debugging |
| Paketsignierung | X.509-Zertifikatsignaturen (Autor und Repository); Clients verifizieren Signaturen bei der Installation |
| Zielframework-Unterstützung | .NET Framework, .NET Standard, .NET 5-9 und höher; Multi-Targeting in einem einzigen `.nupkg` unterstützt |
| Versionsschema | Semantic Versioning 2.0 (SemVer 2.0); Vorabversions-Labels unterstützt (z. B. `-alpha`, `-rc.1`) |
| Paketzwischenspeicher-Ort | `%USERPROFILE%\.nuget\packages\` unter Windows; `~/.nuget/packages/` unter Linux und macOS |
| Abhängigkeitsauflösung | Vollständiger transitiver Abhängigkeitsgraph wird bei `dotnet restore` aufgelöst; optionale Lock-Datei `packages.lock.json` für reproduzierbare Builds |
| Veröffentlicht | 2010 (NuGet 1.0) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | learn.microsoft.com |
NUPKG-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu NUPKG-Dateien.