.NET CLI を使用して NuGet パッケージを作成する方法

注意

以下は、Unix を使用する場合のコマンド ライン サンプルです。 ここに示されている dotnet pack コマンドは Windows でも同じように機能します。

.NET Standard ライブラリと .NET Core ライブラリは NuGet パッケージとして配布されることが期待されています。 実際に、.NET Standard ライブラリはすべてそのように配布され、使用されています。 dotnet pack コマンドを使用して行うのが最も簡単です。

たとえば、NuGet 経由で配布する新しい優れたライブラリを作成したとします。 クロス プラットフォーム ツールを使用して NuGet パッケージを作成すれば、正確に実行できます。 次の例では、netstandard1.0 をターゲットとする SuperAwesomeLibrary というライブラリを想定します。

推移的依存関係がある (つまり、別のパッケージに依存するプロジェクトがある) 場合、NuGet パッケージを作成する前に、dotnet restore コマンドを使用してソリューション全体のパッケージを必ず復元します。 そうしないと、dotnet pack コマンドが正しく機能しません。

復元を必要とするすべてのコマンド (dotnet newdotnet builddotnet rundotnet testdotnet publishdotnet pack など) によって暗黙的に実行されるため、dotnet restore を実行する必要がなくなりました。 暗黙的な復元を無効にするには、--no-restore オプションを使用します。

dotnet restoreなどの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore は引き続き有用なコマンドです。

NuGet フィードの管理方法については、dotnet restore のドキュメントをご覧ください。

パッケージが復元されたことを確認したら、以下のコマンドを実行してライブラリがあるディレクトリに移動できます。

cd src/SuperAwesomeLibrary

その後、コマンド ラインから以下の 1 つのコマンドのみを実行します。

dotnet pack

これで /bin/Debug フォルダーは次のようになります。

$ ls bin/Debug
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg

これにより、デバッグ可能なパッケージが生成されます。 リリース バイナリと共に NuGet パッケージをビルドする場合、必要なのは、--configuration (または -c) スイッチを追加し、引数として release を使用することだけです。

dotnet pack --configuration release

これで、/bin フォルダーに、NuGet パッケージとリリース バイナリを含む release フォルダーが生成されます。

$ ls bin/release
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg

これで、NuGet パッケージを発行するために必要なファイルが準備できました。

dotnet packdotnet publish を混同しないようにしてください

ここで dotnet publish コマンドを使用しても意味がありません。 dotnet publish コマンドは、同じバンドルにすべての依存関係があるアプリケーションを配置するためのものであり、NuGet 経由で配布して使用する NuGet パッケージを生成するためのものではありません。

関連項目