クイック スタート: dotnet CLI を使用してパッケージを作成して発行する

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

前提条件

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

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

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

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

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

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

.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 ライブラリまたはその他のテスト ライブラリの例を使用する場合は、 または Testを含むSample一意の名前を使用します。

「NuGet メタデータ プロパティ」で説明されている任意のプロパティを追加できます。

注意

一般に使用するためにビルドするパッケージの場合は、 プロパティに特に注意してください 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>

パッケージを公開する

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

注意

  • Nuget.org は、アップロードされたすべてのパッケージでウイルスをスキャンし、ウイルスが検出された場合はパッケージを拒否します。 Nuget.org は、リストされているすべての既存のパッケージを定期的にスキャンします。

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

API キーを取得する

  1. nuget.org アカウントにサインイン するか、まだアカウントがない場合は アカウントを作成 します。

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

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

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

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

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

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

    [コピー] リンクを含む新しい 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」を参照してください。

注意

テスト パッケージが 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 キーを使用していることを確認してください。 このエラーは、パッケージ識別子がホストに既に存在していることを示します。 このエラーを修正するには、パッケージ識別子を一意に変更し、プロジェクトを再構築し、 .nupkg ファイルを再作成して、コマンドを push 再試行します。

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

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

注意

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

パッケージを nuget.org にアップロードするときに表示される発行メッセージを示すスクリーンショット。

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

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

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

    nuget.org のパッケージ一覧の [編集] アイコンを示すスクリーンショット。

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

    nuget.org のパッケージの [リスト] チェック ボックスをオフにしているスクリーンショット。

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

注意

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

初めての NuGet パッケージの作成と発行を完了しました。

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

次の手順

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

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