NuGet パッケージ (.nupkg) を作成して公開する方法について記述します。
■ 事前準備
- NuGet Gallery アカウントの作成
NuGet Gallery でアカウントを作成します。
アカウントを作成すると、パッケージの公開に必要な API キーが発行されます。
- ツール
NuGet パッケージを作成するには、次のいずれかのツールが必要です。
両方とも NuGet – Downloads で入手できます。
・NuGet.exe : コマンドライン ツール
・NuGet Package Explorer : GUI ツール
NuGet Package Explorer があれば、NuSpec ファイルや NuGet パッケージを手軽に作成できます。
ただし、バージョン アップなどで継続的に NuGet パッケージを作成するには、
コマンドライン ツールを利用すると便利です。
以下では、主に NuGet.exe で NuGet パッケージを作成する方法を紹介します。
■ Nuspec ファイルを作成する
NuGet パッケージを作成するには、DLL ファイルなどの配布物のほかに、
ID や作者などのメタデータを記述した Nuspec ファイルが必要です。
Nuspec ファイルは拡張子が .nuspec で、XML 形式のファイルです。
Nuspec ファイルのテンプレートは、
nuget spec
を実行すれば得られます。
このファイルに実際のメタデータの値を指定していきます。
Nuspec ファイルの仕様は Nuspec Reference に記述されています。
外部への参照やファイルの追加は、次のように指定します。
- .NET Framework アセンブリへの参照
<frameworkAssemblies>
<frameworkAssembly assemblyName="System.Web" />
</frameworkAssemblies>
- パッケージへの参照
<dependencies>
<dependency id="jQuery" />
</dependencies>
- パッケージに含めるファイル
ライブラリとしてプロジェクトの参照に追加するのであれば、
<files>
<file src="bin\Release\*.*" target="lib\net45" />
</files>
のように指定します。
ファイルとしてプロジェクトに追加するには、lib の代わりに content を指定します。
なお、<files> は <package> の子要素 (<metadata> の兄弟要素) のため注意が必要です。
■ NuGet パッケージを作成する
NuGet パッケージ (.nupkg) を作成するには、次のコマンドを実行します。
nuget pack MyLibrary.nuspec
■ NuGet パッケージを公開する
NuGet パッケージを公開するには、次の方法があります。
- コマンドライン
次のコマンドを実行します。
nuget setapikey XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
nuget push MyLibrary.1.0.0.0.nupkg
setapikey を一度実施すれば API キーが保存されるようです。
- NuGet Package Explorer
NuGet Package Explorer を利用する場合、API キーは毎回指定しなければならないようです。
- NuGet Gallery
NuGet Gallery でアップロードする場合、API キーを指定する必要はありません。
なお、公開前にローカルの環境でインストールを試すことができます。
そのためには、Visual Studio のオプションでパッケージ ソースにローカル ディレクトリを追加します。
■ プロジェクトから NuGet パッケージを作成する方法
一部のメタデータを自動的に補完させる方法もあります。
これは、アセンブリをライブラリとして (target="lib\xxx") パッケージを作成する場合に利用できます。
プロジェクト フォルダー (.csproj などが存在するフォルダー) を作業フォルダーにして
nuget spec
を実行すると、$id$, $version$, $title$, $author$, $description$
というプレースホルダーが含まれた Nuspec ファイルが作成されます。
これらのプレースホルダーには、AssemblyInfo.cs などに記述されたアセンブリ属性の値が利用されます。
あとは、このフォルダー上で
nuget pack
を実行します。
ただし、これだと既定では Debug ビルドされたファイルからパッケージを作成してしまいます。
Release ビルドされたファイルを利用するには、次のコマンドを実行します。
nuget pack -Prop Configuration=Release
■ その他のツール
NuGet Packup を使うと、
必要な情報をすべて AssemblyInfo.cs に指定しておくことで NuGet パッケージを作成できます。
参照
NuGet Gallery
Nuspec Reference
NuGet (CodePlex)
NuGet Package Explorer (CodePlex)
NuGet – NuGet でプロジェクト ライブラリを管理する
NuGet – パッケージを作成して NuGet で公開する
.NET開発の新標準「NuGet」入門(後編)
NuGet Packup (GitHub)
2015年10月15日 00:51
[…] たまに利用する .NET Tips 集 NuGet パッケージを作成して公開する […]
2015年10月23日 15:40
[…] たまに利用する .NET Tips 集 NuGet パッケージを作成して公開する […]