このクイック スタートでは、.NET クラス ライブラリから NuGet パッケージをすばやく作成し、.NETコマンドライン インターフェイスまたは dotnet CLI を使用して nuget.org に発行する方法について説明します。
前提条件
dotnet コマンド ライン ツールを提供する .NET SDK。 Visual Studio 2017 以降、dotnet CLI は、.NETまたは .NET Core 関連のワークロードと共に自動的にインストールされます。
nuget.org の無料アカウント。「 新しい個別アカウントを追加する」の手順に従います。
クラス ライブラリ プロジェクトを作成する
パッケージ化するコードに既存の .NET クラス ライブラリ プロジェクトを使用することも、次のように単純なプロジェクトを作成することもできます。
- AppLogger という名前のフォルダーを作成します。
- コマンド プロンプトを開き、 AppLogger フォルダーに切り替えます。 このクイック スタートのすべての dotnet CLI コマンドは、既定で現在のフォルダーで実行されます。
- 「
dotnet new classlib」と入力すると、現在のフォルダー名のプロジェクトが作成されます。
詳細については、「dotnet new」を参照してください。
プロジェクト ファイルにパッケージ メタデータを追加する
すべての NuGet パッケージには、パッケージの内容と依存関係を記述するマニフェストがあります。 最終的なパッケージでは、マニフェストは .nuspec ファイルであり、プロジェクト ファイルに含める NuGet メタデータ プロパティを使用します。
.csproj、.fsproj、または .vbproj プロジェクト ファイルを開き、既存の <PropertyGroup> タグ内に次のプロパティを追加します。 名前と会社に独自の値を使用し、パッケージ識別子を一意の値に置き換えます。
<PackageId>Contoso.08.28.22.001.Test</PackageId>
<Version>1.0.0</Version>
<Authors>your_name</Authors>
<Company>your_company</Company>
Important
パッケージ識別子は、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 packを実行するたびにdotnet buildを自動的に実行するには、<PropertyGroup>内のプロジェクト ファイルに次の行を追加します。
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
パッケージを発行する
dotnet nuget push コマンドと、nuget.org から取得した API キーを使用して、.nupkg ファイルを nuget.org に発行します。
Note
Nuget.org は、アップロードされたすべてのパッケージでウイルスをスキャンし、ウイルスを含むパッケージを拒否します。 Nuget.org は、リストされているすべてのパッケージを定期的にスキャンします。
nuget.org に発行するパッケージは、リストを解除しない限り、他の開発者に公開されます。 パッケージを非公開でホストするには、「 独自の NuGet フィードのホスティング」を参照してください。
API キーを取得する
nuget.org アカウントにサインイン するか、まだアカウントがない場合は アカウントを作成 します。
右上隅でユーザー名を選択し、[ API キー] を選択します。
[ 作成] を選択し、キーの名前を入力します。
スコープの選択でプッシュを選択します。
[ パッケージの選択] の [Glob パターン] に、アスタリスク (*) を入力します。
を選択してを作成します。
[ コピー] を選択して新しいキーをコピーします。
Important
- API キーは常にシークレットのままにします。 API キーは、誰でも自分の代わりにパッケージを管理するために使用できるパスワードに似ています。 誤って表示された場合は、API キーを削除または再生成します。
- 後でもう一度キーをコピーできないため、キーを安全な場所に保存します。 API キー ページに戻った場合は、キーを再生成してコピーする必要があります。 パッケージをプッシュする必要がなくなった場合は、API キーを削除することもできます。
スコープ を使用すると、さまざまな目的で個別の API キーを作成できます。 各キーには有効期限があり、特定のパッケージまたは glob パターンにキーのスコープを設定できます。 また、各キーのスコープは、新しいパッケージとパッケージ バージョンのプッシュ、新しいパッケージ バージョンのプッシュのみ、またはリストの解除など、特定の操作に限定します。
スコープを使用すると、組織のパッケージを管理するさまざまなユーザーに対して API キーを作成し、必要なアクセス許可のみを持つことができます。
詳細については、「 スコープ付き API キー」を参照してください。
dotnet nuget プッシュを使用して発行する
.nupkg ファイルを含むフォルダーから、次のコマンドを実行します。
<package-file>を .nupkg ファイルの名前に置き換え、<API-key>を API キーに置き換えます。
dotnet nuget push <package-file> --api-key <API-key> --source https://api.nuget.org/v3/index.json
出力には、発行プロセスの結果が表示されます。
Pushing <package-file> to 'https://www.nuget.org/api/v2/package'...
PUT https://www.nuget.org/api/v2/package/
Created https://www.nuget.org/api/v2/package/ 2891ms
Your package was pushed.
詳細については、「 dotnet nuget push」を参照してください。
発行エラー
push コマンドを実行すると、エラーが発生することがあります。 たとえば、次のような状況でエラーが発生することがあります。
- API キーが無効であるか、有効期限が切れています。
- ホストに既に存在する識別子を持つパッケージを発行しようとするとします。
- 発行済みパッケージに変更を加えますが、もう一度発行する前にバージョン番号の更新を忘れた場合。
エラー メッセージは通常、問題の原因を示します。
たとえば、識別子 Contoso.App.Logger.Test nuget.org に存在するとします。その識別子を持つパッケージを発行しようとすると、次のエラーが表示されます。
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 に移動し、右上隅にあるユーザー名を選択し、[ パッケージの管理] を選択します。
Note
パッケージのインデックスが作成され、他のユーザーが検索できる検索結果に表示されるまでに、しばらく時間がかかる場合があります。 その間、パッケージは リストされていないパッケージの下に表示され、パッケージ ページには次のメッセージが表示されます。
NuGet パッケージが nuget.org で発行されたので、他の開発者はプロジェクトで使用できます。
役に立たないパッケージ (空のクラス ライブラリからのこのサンプル パッケージなど) を作成する場合、またはパッケージを表示したくない場合は、パッケージの 一覧を解除 して検索結果から非表示にすることができます。
パッケージが [パッケージの管理] ページの [発行済みパッケージ ] の下に表示されたら、 パッケージ の一覧の横にある鉛筆アイコンを選択します。
次のページで[ リスト]を選択し、[ 検索結果のリスト ]チェックボックスをオフにして、[ 保存]を選択します。
パッケージは、[パッケージの管理] の [一覧に含まないパッケージ] の下に表示され、検索結果に表示されなくなります。
Note
テスト パッケージが nuget.org で稼働しないように、 https://int.nugettest.orgの nuget.org テスト サイトにプッシュできます。int.nugettest.org にアップロードされたパッケージは保持されない場合があることに注意してください。
初めての NuGet パッケージの作成と発行を完了しました。
関連動画
チャンネル 9 と YouTube で、その他の NuGet ビデオを見つけます。
次のステップ
dotnet CLI を使用してパッケージを作成する方法の詳細を参照してください。
NuGet パッケージの作成と発行の詳細については、以下を参照してください。