クイック スタート: dotnet CLI を使用したパッケージの作成と公開

このクイックスタートでは、.NET クラス ライブラリから NuGet パッケージをすばやく作成し、.NET コマンドライン インターフェイス (dotnet CLI) を使用して nuget.org に公開する方法について説明します。

前提条件

  • .NET SDK。これは、コマンドライン ツールを提供します。 Visual Studio 2017 以降。dotnet CLI は .NET または .NET Core に関連するすべてのワークロードで自動的にインストールされます。

  • nuget.org の無料アカウント。「新しい個人アカウントを追加する」の手順に従います。

クラス ライブラリ プロジェクトを作成する

パッケージ化するコードに既存の .NET クラス ライブラリ プロジェクトを使用することも、次の手順に従って単純なプロジェクトを作成することもできます。

  1. AppLogger」という名前のフォルダーを作成します。
  2. コマンド プロンプトを開いて、AppLogger フォルダーに切り替えます。 このクイックスタートのすべての dotnet CLI コマンドは、既定では現在のフォルダーで実行されます。
  3. dotnet new classlib を入力します。これにより、現在のフォルダー名を持つプロジェクトが作成されます。

詳細については、「dotnet new」を参照してください。

パッケージのメタデータをプロジェクト ファイルに追加する

すべての NuGet パッケージには、そのパッケージの内容と依存関係を説明するマニフェストがあります。 最終的なパッケージでは、マニフェストは、プロジェクト ファイルに含まれる NuGet メタデータのプロパティを使用する .nuspec ファイルです。

.csproj.fproj、または .vbproj プロジェクト ファイルを開き、既存の <PropertyGroup> タグ内に次のプロパティを追加します。 名前と会社に独自の値を使用し、パッケージ識別子を一意の値に置き換えます。

<PackageId>Contoso.08.28.22.001.Test</PackageId>
<Version>1.0.0</Version>
<Authors>your_name</Authors>
<Company>your_company</Company>

重要

パッケージ識別子は、nuget.org とその他のパッケージ ソース間で一意である必要があります。 発行するとパッケージが一般公開されるため、サンプルの AppLogger ライブラリまたはその他のテスト ライブラリを使用する場合は、Sample または Test を含む一意の名前を使用してください。

NuGet メタデータ プロパティ」で説明するオプションのプロパティを追加できます。

Note

一般公開するためにビルドするパッケージについては、PackageTags プロパティに特に注意してください。 タグは、他のユーザーがパッケージを見つけて、その内容を理解するのに役立ちます。

pack コマンドを実行する

プロジェクトから NuGet パッケージまたは .nupkg ファイルをビルドするには、dotnet pack コマンドを実行します。このコマンドではプロジェクトのビルドも自動的に行われます。

dotnet pack

出力に、.nupkg ファイルへのパスが表示されます。

MSBuild version 17.3.0+92e077650 for .NET
  Determining projects to restore...
  Restored C:\Users\myname\source\repos\AppLogger\AppLogger.csproj (in 64 ms).
  AppLogger -> C:\Users\myname\source\repos\AppLogger\bin\Debug\net6.0\AppLogger.dll
  Successfully created package 'C:\Users\myname\source\repos\AppLogger\bin\Debug\Contoso.08.28.22.001.Test.1.0.0.nupkg'.

ビルド時に自動的にパッケージを生成する

dotnet build の実行時に自動的に dotnet pack を実行させるには、プロジェクト ファイルの <PropertyGroup> 内に次の行を追加します。

    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>

パッケージを公開する

dotnet nuget push コマンドと、nuget.org から取得した API キーを使用して、.nupkg ファイルを nuget.org に公開します。

Note

  • nuget.org は、アップロードされたすべてのパッケージでウイルスをスキャンし、ウイルスが見つかったパッケージを拒否します。 nuget.org では一覧にあるすべてのパッケージも定期的にスキャンされます。

  • nuget.org に公開したパッケージは、一覧から削除しない限り、他の開発者に一般公開されます。 パッケージを非公開でホストするには、「独自の NuGet フィードのホスト」を参照してください。

API キーを取得する

  1. ご自分の nuget.org アカウントにサインインするか、まだ持っていなければ、アカウントを作成します。

  2. 右上にあるユーザー名を選択し、[API キー] を選択します。

  3. [作成] を選択して、キーの名前を指定します。

  4. [スコープの選択][プッシュ] を選択します。

  5. [パッケージの選択]>[glob パターン] に「*」と入力します。

  6. [作成] を選択します

  7. [コピー] を選択して新しいキーをコピーします。

    Screenshot that shows the new API key with the Copy link.

重要

  • API キーは誰にも教えないでください。 API キーはパスワードのようなものであり、API キーを使うと、誰でもお客様に代わってパッケージを管理できるようになります。 API キーが誤って漏えいした場合は、削除または再生成してください。
  • 後でもう一度キーをコピーすることはできないため、キーを安全な場所に保存しておいてください。 [API キー] ページに戻ったら、キーを再生成してコピーする必要があります。 パッケージをプッシュする必要がなくなった場合は、API キーを削除することもできます。

スコープを使用して、別の目的のために別の API キーを作成できます。 各キーには有効期限の時間枠があり、特定のパッケージ (またはの glob パターン) に対してスコープを設定できます。 また、各キーのスコープは、「新しいパッケージとパッケージ バージョンのプッシュ」、「新しいパッケージ バージョンのプッシュのみ」、「またはリストから外す」など、特定の操作に限定して設定します。

組織のパッケージ管理を行う担当者が必要なアクセス許可以外は持たないように、スコープを使用して、担当者ごとに API キーを作成できます。

詳しくは、「スコープ設定された API キー」をご覧ください。

dotnet nuget push を使用して公開する

.nupkg ファイルを含むフォルダーから、次のコマンドを実行します。 .nupkg ファイル名を指定し、キーの値をご自身の API キーに置き換えます。

dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json

出力に、公開プロセスの結果が表示されます。

Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
  Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.

詳細については、「dotnet nuget push」を参照してください。

Note

テスト パッケージが nuget.org で公開されないようにするには、nuget.org のテスト サイト (https://int.nugettest.org) にプッシュします。int.nugettest.org にアップロードされたパッケージは保持されない場合があることに注意してください。

公開エラー

push コマンドのエラーは、通常、問題があることを示します。 たとえば、プロジェクトのバージョン番号の更新を忘れて、既に存在するパッケージを公開しようとした場合などがあります。

また、API キーが無効または期限切れである場合、またはホストに既に存在する識別子を使用してパッケージを発行しようとした場合も、エラーが表示されます。 たとえば、識別子 AppLogger-test が既に nuget.org に存在するとします。その識別子を持つパッケージを公開しようとすると、push コマンドによって次のエラーが発生します。

Response status code does not indicate success: 403 (The specified API key is invalid,
has expired, or does not have permission to access the specified package.).

このエラーが発生した場合は、有効期限が切れていない有効な API キーを使用していることを確認してください。 有効な API キーを使用している場合、このエラーは、パッケージ識別子がホストに既に存在していることを示します。 エラーを修正するには、一意になるようにパッケージ識別子を変更し、プロジェクトをリビルドして、.nupkg ファイルを再作成した後、push コマンドを再試行します。

公開済みパッケージを管理する

パッケージが正常に公開されると、確認メールが届きます。 公開したパッケージを確認するには、nuget.org で右上にあるユーザー名を選択し、[パッケージの管理] を選択します。

Note

パッケージのインデックスが作成され、検索結果に表示されて他のユーザーが検索できるようになるまでに、時間がかかる場合があります。 その間、パッケージは [一覧に含まれないパッケージ] の下に表示され、パッケージ ページには次のメッセージが表示されます。

Screenshot showing the publishing message that's displayed when you upload a package to nuget.org.

これで、NuGet パッケージが nuget.org に公開されました。他の開発者はこのパッケージを自身のプロジェクトで使用することができます。

役に立たないパッケージ (空のクラス ライブラリを使用して作成されたこのサンプル パッケージなど) を作成した場合、またはパッケージを公開しない場合は、検索結果で非表示になるように、パッケージをリストから外すことができます。

  1. パッケージが [パッケージの管理] ページの [公開済みパッケージ] の下に表示されたら、パッケージの一覧の横にある鉛筆アイコンを選択します。

    Screenshot that shows the Edit icon for a package listing on nuget.org.

  2. 次のページで、[リスト] を選択し、[検索結果に表示] チェックボックスの選択を解除して、[保存] を選択します。

    Screenshot that shows clearing the List checkbox for a package on nuget.org.

パッケージは、[パッケージの管理][一覧に含まれないパッケージ] の下に表示され、検索結果に表示されなくなります。

Note

テスト パッケージが nuget.org で公開されないようにするには、nuget.org のテスト サイト (https://int.nugettest.org) にプッシュします。int.nugettest.org にアップロードされたパッケージは保持されない場合があることに注意してください。

これで、最初の NuGet パッケージを作成して公開できました。

他の NuGet ビデオは、Channel 9 および YouTube でご覧いただけます。

次のステップ

dotnet CLI を使用してパッケージを作成する方法の詳細については、以下を参照してください。

NuGet パッケージの作成と発行の詳細については、以下を参照してください。