なぜ NUPKG を NUSPEC に変換するのですか?
.nuspec には、ID、バージョン、作成者、依存関係、ライセンスなどのパッケージマニフェストが含まれています。パッケージをインストールせずにメタデータを確認したり、新しいパッケージのテンプレートとして再利用したり、マニフェストを個別に必要とするプライベートフィードにプッシュしたりする場合に必要になります。
NUPKG から NUSPEC への変換方法
7-Zip OPEN-SOURCE
.nupkg を右クリックし、「7-Zip > アーカイブを開く」を選択し、アーカイブのルートにある .nuspec を選択して「展開」をクリックします。
NuGet Package Explorer OPEN-SOURCE
「File > Open local package」から .nupkg を開き、コンテンツパネルで .nuspec を選択してから、「File > Save metadata as」を使用してスタンドアロンファイルとして保存します。
.zip にリネーム FREE
.nupkg の拡張子を .zip に変更し、Windows エクスプローラーで開くか、macOS/Linux で unzip を使用して、アーカイブのルートから .nuspec をコピーします。
これらの形式について
.nupkg ファイルは NuGet パッケージであり、.NET エコシステムで .NET ライブラリを配布するための標準的な形式です。これは、コンパイル済みの .dll ファイルと .nuspec メタデータ マニフェストを保持する ZIP アーカイブです。手動で開くことはほとんどありません。Visual Studio や «dotnet add package»…
.NUPKG の詳細を開く →.NUSPEC ファイルは、developer ファイルである NuGet settings に関連付けられています。
.NUSPEC の詳細を開く →品質と注意点
- ビルド済みの
.nupkg内の.nuspecは、手書きのマニフェストではなく、ビルド時に解決された値(例:.csprojからのバージョン)を反映しています。 - 抽出された
.nuspecは完全で有効なものであり、そのままnuget packでパッケージの再構築やフォークに使用できます。 dotnet packビルドから抽出された.nuspecファイルには、通常<files>要素は含まれません。ファイルレイアウトはビルド時に自動的に解決されるためです。
よくある質問
`.nupkg` 内のどこに `.nuspec` はありますか?
<id>.<version>.nuspec です。抽出した `.nuspec` を使ってパッケージを再パックできますか?
nuget pack で使用可能な、完全で有効なマニフェストです。`.nuspec` と `.nupkg` の違いは何ですか?
.nuspec はプレーンな XML メタデータのみです。.nupkg は DLL、.nuspec、およびその他のすべてのパッケージアセットを含む完全な ZIP アーカイブです。