Co to jest format pliku NUPKG?
Plik .nupkg przechowuje standaryzowany pakiet NuGet używany do dystrybucji bibliotek, narzędzi lub komponentów aplikacji .NET. Pod spodem .nupkg to archiwum ZIP o strukturze zgodnej z Open Packaging Conventions (OPC) - tej samej rodziny kontenerów co .docx - i zawiera skompilowane zestawy .dll, manifest metadanych .nuspec, deskryptor [Content_Types].xml oraz foldery lib/, które organizują zestawy według identyfikatorów docelowych platform (np. net8.0, netstandard2.0).
Czym jest NuGet?
NuGet to menedżer pakietów dla platformy programistycznej Microsoft .NET, obecnie zarządzany przez .NET Foundation. Jest on domyślnie dołączany do Visual Studio od wersji Visual Studio 2012 i jest również dostępny jako samodzielny interfejs CLI. NuGet obsługuje .NET Framework, .NET Standard oraz wszystkie nowoczesne wydania .NET.
Jak generowane są pliki .nupkg?
Pakiety NuGet można generować z folderu projektu za pomocą polecenia dotnet pack (nowoczesne podejście wieloplatformowe) lub starszego interfejsu CLI nuget pack. Podczas korzystania z dotnet pack metadane pakietu są odczytywane bezpośrednio z pliku projektu .csproj, więc oddzielny manifest .nuspec nie jest już wymagany - choć nadal można go dostarczyć w zaawansowanych scenariuszach. Wynikiem jest archiwum .nupkg gotowe do dystrybucji.
Jak udostępnić pakiet NuGet?
Najpopularniejszym sposobem udostępniania plików .nupkg jest publikowanie ich na platformie internetowej nuget.org. Po zarejestrowaniu konta użytkownicy przesyłają swój plik .nupkg i podają krótki opis; każdy pakiet przechodzi automatyczną walidację przed indeksowaniem i udostępnieniem do pobrania. Prywatne kanały hostowane w Azure Artifacts, GitHub Packages lub na serwerach własnych są również powszechne w środowiskach korporacyjnych. Towarzyszące pakiety symboli .snupkg mogą być publikowane wraz z .nupkg, aby umożliwić debugowanie kodu źródłowego.
Bezpieczeństwo
RYZYKO: MEDIUMPlik .nupkg to dane, nie jest bezpośrednio wykonywalny, ale instalacja pakietu uruchamia jego kod w procesie budowania i w aplikacjach, więc ryzyko związane z łańcuchem dostaw jest realne: złośliwe pakiety lub typosquatting na nuget.org były używane do przesyłania złośliwego oprogramowania, a narzędzia/skrypty instalacyjne pakietu lub cele MSBuild mogą być uruchamiane podczas przywracania/budowania. Instaluj pakiety tylko od zaufanych autorów, uważaj na literówki w identyfikatorach, preferuj pakiety z dużą liczbą pobrań i linkami do źródeł oraz rozważ korzystanie z podpisanych pakietów i plików blokady. Samo sprawdzanie .nupkg poprzez rozpakowanie go jest bezpieczne - ryzyko wynika z instalacji i budowania z jego użyciem.
Szczegóły formatu
w pigułceProgramy otwierające pliki NUPKG
Szczegóły techniczne
specyfikacja| Format kontenera | ZIP (Open Packaging Conventions / OPC) - ta sama rodzina kontenerów co .docx i .xlsx |
| Magiczne bajty | `50 4B 03 04` („PK”) - standardowy nagłówek pliku lokalnego ZIP pod offsetem 0 |
| Typ MIME | `application/octet-stream` |
| Manifest wewnętrzny | Plik XML `.nuspec` w katalogu głównym pakietu; deklaruje Id, wersję, autorów, zależności i docelowe platformy |
| Wymagana struktura OPC | `[Content_Types].xml`, folder `_rels/` i co najmniej jeden manifest `.nuspec` |
| Konwencja ścieżek zestawów | Foldery `lib/<TFM>/` - np. `lib/net8.0/`, `lib/netstandard2.0/` - jeden na identyfikator docelowej platformy |
| Narzędzia budowania | `dotnet pack` (projekty typu SDK, wieloplatformowe) lub `nuget pack` (starszy NuGet CLI) |
| Publiczny rejestr | nuget.org - ponad 500 000 unikalnych identyfikatorów pakietów; pakiety przechodzą automatyczną walidację przed indeksowaniem |
| Format towarzyszący symboli | `.snupkg` - oddzielne archiwum przechowujące pliki symboli `.pdb` do debugowania na poziomie kodu źródłowego |
| Podpisywanie pakietów | Podpisy certyfikatów X.509 (autora i repozytorium); klienci weryfikują podpisy podczas instalacji |
| Obsługa platform docelowych | .NET Framework, .NET Standard, .NET 5-9 i nowsze; obsługa wielu platform w jednym `.nupkg` |
| Schemat wersji | Semantic Versioning 2.0 (SemVer 2.0); obsługa etykiet wersji wstępnych (np. `-alpha`, `-rc.1`) |
| Lokalizacja pamięci podręcznej | `%USERPROFILE%\.nuget\packages\` w systemie Windows; `~/.nuget/packages/` w systemach Linux i macOS |
| Rozwiązywanie zależności | Pełny przechodni graf zależności rozwiązywany podczas `dotnet restore`; opcjonalny plik blokady `packages.lock.json` dla powtarzalnych kompilacji |
| Wydano | 2010 (NuGet 1.0) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | learn.microsoft.com |
Konwersje NUPKG
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki NUPKG.