NuGet パッケージを作成して公開する

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 Packup - AssemblyInfo.cs

 

参照
NuGet Gallery
Nuspec Reference
NuGet (CodePlex)
NuGet Package Explorer (CodePlex)

NuGet – NuGet でプロジェクト ライブラリを管理する
NuGet – パッケージを作成して NuGet で公開する
.NET開発の新標準「NuGet」入門(後編)
NuGet Packup (GitHub)

カテゴリー: ツール. タグ: , . 2 Comments »

2件のフィードバック to “NuGet パッケージを作成して公開する”

  1. .NET ビルド小技集 (3) | Do Design Space Says:

    […] たまに利用する .NET Tips 集 NuGet パッケージを作成して公開する […]

  2. .NET ビルド小技集 (4) | Do Design Space Says:

    […] たまに利用する .NET Tips 集 NuGet パッケージを作成して公開する […]


コメントを残す