secretbase.log

.NET/C#/Pythonなど

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 をクリックします。

f:id:cointoss1973:20170313133100p:plain

Create a Package をクリックします。

f:id:cointoss1973:20170313133110p:plain

ここです。(最初は Create a Package だけだったのかもしれませんね。 Publish まで含まれています)

f:id:cointoss1973:20170313133125p:plain

では、Quickstart に沿って、簡単にメモしながら実行していきたいと思います。

   

事前準備 必要なインストール

  1. VS2015 を準備してください
  2. nuget.exe の 最新 をダウンロードして、好きな場所においてください。

f:id:cointoss1973:20170313094030p:plain

nuget.exe をダウンロードしてパスの通っている箇所におきました。

現時点(2017/3/15)では v3.5.0 が推奨の最新版 (Recommended latest)です。

クラスライブラリ プロジェクトの作成

  1. クラスライブラリのプロジェクトを作成してください

f:id:cointoss1973:20170313133138p:plain

AppLogger というクラスライブラリをつくりました。    

.nuspec パッケージマニフェストファイルを作成する

NuGetパッケージは、内容と依存関係を記述するためのマニフェストファイル(.nuspec)が必要です。 nugetコマンドラインでファイルをつくれます。カスタマイズしてください。

  1. コマンドプロンプトを開いて、csproj の場所に移動してください
  2. nuget spec を実行してね ( AppLogger.nuspec がつくられます)
  3. 好みのテキストエディタで開いて編集してください
    • $<token>$ で囲まれた箇所は Properties/AssenblyInfo.cs ファイルの内容に置き換わります
  4. パッケージIDを選んでね。名前空間のネーミング規約を適用することをお勧めします。

手順に沿って、nuspecファイルのひな形を作成します。

f:id:cointoss1973:20170314155405p:plain

AppLogger.nuspec ファイルが生成されました。

エディタで開いてみます。(使ったエディタは VSCodeです。)

f:id:cointoss1973:20170314160223p:plain

  • 下記のような感じで 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 にパッケージを公開する場合の手順です。

  1. nuget.org のフリーアカウントをとるか持っている人はログインしてください。
  2. ログインしたらユーザー名をクリックすると設定画面に飛びます。
  3. API Key を Copy to Clipboard を押してコピー (API Key は秘密にしてください)してください。
  4. nuget push AppLogger.1.0.0.0.nupkg 47be3377-c434-4c29-8576-af7f6993a54b -Source https://www.nuget.org/api/v2/package で公開できます。

以上が、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経由で参照することができます。

f:id:cointoss1973:20170313093435p:plain

ありそうな質問

クイックガイドを行った時点でありそうな質問をまとめます。

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 にて パッケージを公開できる

参考