Nuget Packageの作り方

EasySqlParserでNuget Packageを作るときにハマったのでメモ

昔はCUI(Nugetコマンド)とかGUI(NuGet Package Explorer)とかでやってたましたが.NET Standardではdotnetコマンドでやります

cd プロジェクトファイルがあるディレクトリ
dotnet pack -c Release
rem デバッグシンボルも含める場合
rem dotnet pack -c Release --include-symbols

いやー、楽になったもんです

昔やったときはnuspecとかいうNugetパッケージを作るための元ネタ(ライブラリのバージョンとか依存関係とか)となるxmlを作る必要があったんですがそれは不要になりました

.NET Standardではそれらの情報をどこに書くかというとプロジェクトファイルに書きます

別ファイルに書くより断然楽です

Nugetパッケージができたらサーバにプッシュします

dotnet nuget push xxx.nupkg

ハマったところ

上記の情報はググればわりとヒットします

ハマったのは2019でやろうとしたときのことです

2017時代の情報はここに載っていますが、2019と比べると何かが違う

ライセンスが2017ではライセンスファイルへのURL指定だったものが2019では「MIT」とか「Apache-2.0」とか単なる文字列を指定するように変わっていました

どういう文字列ならいいのかという話ですが、これはSPDX識別子というもののようでここから選んで指定します

まとめ

.NET Standardでは…

  • ライブラリのバージョンの情報などはプロジェクトファイル(csprojとか)に書く

  • PackageLicenseExpressionはSPDX識別子から選ぶ

  • Nugetパッケージはdotnetコマンドで作る

おまけ

これを見る限りは以前に比べてプライベートリポジトリが増えているようなので、社内のライブラリでも利用するようにすれば管理が楽になると思います

参考

docs.microsoft.com

docs.microsoft.com