NETCore SDK プロジェクトでnugetパッケージを作成する

NETCore SDK プロジェクトでnugetパッケージを作成してみたのでその手順をまとめたいと思います。(VisualStudioなどは予めインストールされていることとします。)

nuspecファイルを作成する

nugetパッケージを作成するためnuget specコマンドを実行してnuspecファイルを作成します。

> cd /path/to/project
> nuget spec

nuspecファイルを編集する

作成したnuspecファイルの内容を編集します。が、VisualStudioを利用している場合には特に編集する必要はない気がします。

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>$description$</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2017</copyright>
  </metadata>
</package>

nugetパッケージを作成する

NETCore SDK プロジェクトではnuget pack {プロジェクト名}を実行すると型 'System.String' のオブジェクトを型 'NuGet.Frameworks.NuGet.Frameworks1051960.NuGetFramework' にキャストできません。というエラーが発生しパッケージを作成することができません。

NuGet pack Unable to cast object of type 'System.String' to type 'NuGet.Frameworks.NuGetFramework' · Issue #4808 · NuGet/Home

上記のIssueに書いているとおりmsbuild /t:packで実行すればうまく作成できます。

$ msbuild /t:pack
.NET Framework 向け Microsoft (R) Build Engine バージョン 15.4.8.50001
Copyright (C) Microsoft Corporation.All rights reserved.

このソリューション内のプロジェクトを 1 度に 1 つずつビルドします。並行ビルドを有効にするには、"/m" スイッチを追加してください。
2017/12/09 13:24:13 にビルドを開始しました。

....

ビルドに成功しました。
    0 個の警告
    0 エラー

経過時間 00:00:01.37

おわりに

はじめてnugetパッケージを作成してみたのですが、とてもかんたんにできました。MS製品は製品内の完結度が高くて何かを始めるのが楽なのが素敵です。

C#実践開発手法 (マイクロソフト公式解説書)

C#実践開発手法 (マイクロソフト公式解説書)