NuGet クイックスタート | nupkg をつくる
NuGet の公式ドキュメント からたどれる場所に nupkg を作るための Quickstart がおいてありまして参考になりました。
TL;DR
- nugetコマンドがある
- nuget spec hoge.csproj にて .nuspec のひな形がつくれる
- nuget pack hoge.csproj にてパッケージ(.nupack)がつくれる
- nuget push hoge.1.0.0.0.nupkg にて パッケージを公開できる
Quickstart の場所
まずは、 Quickstartへの行き方です。
nuget.org の Documentation をクリックします。
Create a Package をクリックします。
ここです。(最初は Create a Package だけだったのかもしれませんね。 Publish まで含まれています)
では、Quickstart に沿って、簡単にメモしながら実行していきたいと思います。
事前準備 必要なインストール
nuget.exe をダウンロードしてパスの通っている箇所におきました。
現時点(2017/3/15)では v3.5.0 が推奨の最新版 (Recommended latest)です。
クラスライブラリ プロジェクトの作成
- クラスライブラリのプロジェクトを作成してください
AppLogger というクラスライブラリをつくりました。
.nuspec パッケージマニフェストファイルを作成する
NuGetパッケージは、内容と依存関係を記述するためのマニフェストファイル(.nuspec)が必要です。 nugetコマンドラインでファイルをつくれます。カスタマイズしてください。
手順に沿って、nuspecファイルのひな形を作成します。
AppLogger.nuspec ファイルが生成されました。
エディタで開いてみます。(使ったエディタは VSCodeです。)
- 下記のような感じで nuspec ファイルを編集します。
<?xml version="1.0"?> <package> <metadata> <id>MyCompanyName.MyProductName.MyPackageName</id> <version>$version$</version> <title>$title$</title> <authors>kraigb</authors> <owners>kraigb</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Awesome application logging utility</description> <releaseNotes>First release</releaseNotes> <copyright>Copyright 2017</copyright> <tags>application app logger logging logs</tags> </metadata> </package>
パッケージをつくる
nuget pack AppLogger.csproj
のコマンドを実行してください。
- AppLogger.1.0.0.0.nupkg がつくられます。
- 注意: デフォルト値から更新していない場合、警告が表示されることに注意してください。
nuget pack コマンドの実行にて、無事、nupkg ができました。
パッケージの公開
nuget.org の場合
nuget.org にパッケージを公開する場合の手順です。
以上が、Quickstart の手順となります。
おまけ
ここからは、次のステップに向けていくつか調べた内容を記載していきます。
ローカル環境でパッケージを利用する場合
マシンのローカルにおいて利用(インストール)することもできます。
C:\data\NuGetPackeges
を作成し、そこに パッケージを追加する方法です。
以下のバッチファイルを用意しました。ビルド後に実行することで パッケージを追加します。
nuget pack foo.csproj -Prop Configuration=Release set PkgDir=C:\data\NuGetPackages if EXIST %PkgDir% ( for %%N in ( *.nupkg ) do ( %NUGET% add %%N -source %PkgDir% ) )
Visual Studio のソリューションのパッケージ管理のパッケージソースを追加することで NuGet経由で参照することができます。
ありそうな質問
クイックガイドを行った時点でありそうな質問をまとめます。
Debug ビルドの成果物がPack対象になっているみたい。Releaseにできない?
nuget pack foo.csproj は、 bin/Debug 配下の DLL を Pack します。
bin/Release をPackしたい場合は、下記オプション指定でOKです。
> nuget pack Foo.csproj -Prop Configuration=Release`
まとめ
- nuget spec hoge.csproj にて .nuspec のひな形がつくれる
- nuget pack hoge.csproj にてパッケージ(.nupack)がつくれる
- nuget push hoge.1.0.0.0.nupkg にて パッケージを公開できる