NUPKG ファイル形式とは?
.nupkg ファイルには、.NET ライブラリ、ツール、またはアプリケーション コンポーネントを配布するために使用される標準化された NuGet パッケージ が格納されています。その実体は、.docx と同じコンテナ ファミリである Open Packaging Conventions (OPC) に従って構造化された ZIP アーカイブ であり、コンパイル済みの .dll アセンブリ、.nuspec メタデータ マニフェスト、[Content_Types].xml 記述子、およびターゲット フレームワーク モニカー(例:net8.0、netstandard2.0)ごとにアセンブリを整理する lib/ フォルダが含まれています。
NuGet とは何ですか?
NuGet は、Microsoft .NET 開発プラットフォーム用のパッケージ マネージャーであり、現在は .NET Foundation によって管理されています。Visual Studio 2012 のリリース以降、Visual Studio にデフォルトでバンドルされており、スタンドアロンの CLI としても利用可能です。NuGet は、.NET Framework、.NET Standard、およびすべての最新の .NET リリースをサポートしています。
.nupkg ファイルはどのように生成されますか?
NuGet パッケージは、dotnet pack コマンド(最新のクロスプラットフォーム アプローチ)またはレガシーな nuget pack CLI を使用してプロジェクト フォルダから生成できます。dotnet pack を使用する場合、パッケージのメタデータは .csproj プロジェクト ファイルから直接読み取られるため、個別の .nuspec マニフェストは不要になりました(ただし、高度なシナリオでは引き続き提供可能です)。出力は、配布準備が整った .nupkg アーカイブとなります。
NuGet パッケージを共有する方法は?
.nupkg ファイルを共有する最も一般的な方法は、nuget.org ウェブ プラットフォームに公開することです。アカウントを登録した後、ユーザーは .nupkg ファイルをアップロードし、簡単な説明を入力します。各パッケージは、インデックスが作成されダウンロード可能になる前に、自動検証が行われます。Azure Artifacts、GitHub Packages、またはセルフホスト サーバーでホストされるプライベート フィードも、エンタープライズ環境では一般的です。デバッガーでのソース ステップ実行を可能にするために、コンパニオン .snupkg シンボル パッケージを .nupkg と共に公開することもできます。
セキュリティと安全性
リスク: MEDIUM.nupkg はデータであり、直接実行可能ではありませんが、パッケージをインストールするとビルドやアプリでそのコードが実行されるため、サプライチェーンのリスクは実在します。nuget.org 上の悪意のあるパッケージやタイポスクワッティングされたパッケージがマルウェアの配布に使用された事例があり、パッケージのツール、インストール スクリプト、または MSBuild ターゲットはリストアやビルド中に実行される可能性があります。信頼できる作成者のパッケージのみをインストールし、タイポスクワッティングされた ID に注意し、ダウンロード数やソース リンクが多いパッケージを優先し、署名済みパッケージやロック ファイルの使用を検討してください。単に解凍して .nupkg を検査することは安全です。リスクは、それに対してインストールやビルドを行うことから生じます。
形式の詳細
概要NUPKG ファイルを開くプログラム
技術的詳細
詳細仕様| コンテナ形式 | ZIP (Open Packaging Conventions / OPC) - .docx や .xlsx と同じコンテナ ファミリ |
| マジック バイト | `50 4B 03 04` ("PK") - オフセット 0 の標準 ZIP ローカル ファイル ヘッダー |
| MIME タイプ | `application/octet-stream` |
| 内部マニフェスト | パッケージ ルートにある `.nuspec` XML ファイル。Id、Version、Authors、依存関係、およびターゲット フレームワークを宣言 |
| 必須の OPC 構造 | `[Content_Types].xml`、`_rels/` フォルダ、および少なくとも 1 つの `.nuspec` マニフェスト |
| アセンブリ パス規則 | `lib/<TFM>/` フォルダ(例:`lib/net8.0/`、`lib/netstandard2.0/`)- ターゲット フレームワーク モニカーごとに 1 つ |
| ビルド ツール | `dotnet pack` (SDK スタイル プロジェクト、クロスプラットフォーム) または `nuget pack` (レガシー NuGet CLI) |
| パブリック レジストリ | nuget.org - 50 万以上のユニークなパッケージ ID。パッケージはインデックス作成前に自動検証に合格する必要がある |
| シンボル コンパニオン形式 | `.snupkg` - ソース レベルのデバッグ用に `.pdb` シンボル ファイルを保持する別のアーカイブ |
| パッケージ署名 | X.509 証明書署名(作成者およびリポジトリ)。クライアントはインストール時に署名を検証 |
| ターゲット フレームワーク サポート | .NET Framework、.NET Standard、.NET 5-9 以降。単一の `.nupkg` でのマルチターゲットをサポート |
| バージョン スキーム | Semantic Versioning 2.0 (SemVer 2.0)。プレリリース ラベルをサポート(例:`-alpha`、`-rc.1`) |
| パッケージ キャッシュの場所 | Windows では `%USERPROFILE%\.nuget\packages\`、Linux および macOS では `~/.nuget/packages/` |
| 依存関係の解決 | `dotnet restore` 時に完全な推移的依存関係グラフを解決。再現可能なビルドのためのオプションのロック ファイル `packages.lock.json` |
| リリース日 | 2010 (NuGet 1.0) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | learn.microsoft.com |
NUPKG の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。NUPKG ファイルについて最初の質問をしてみましょう。