クイック スタート: Visual Studio を使用して NuGet パッケージを作成して発行する (Windows のみ)
Microsoft Visual Studio では、.NET クラス ライブラリから NuGet パッケージを作成し、CLI ツールを使用して nuget.org に発行できます。
クイック スタートは Windows ユーザー専用です。 Visual Studio for Macを使用している場合は、「既存のライブラリ プロジェクトから NuGet パッケージを作成する」または「.NET CLI を使用する」を参照してください。
前提条件
.NET Core 関連のワークロードを使用して Visual Studio 2022 for Windows をインストールします。
2022 Community エディションは 、visualstudio.microsoft.com から無料でインストールすることも、Professional または Enterprise エディションを使用することもできます。
をインストールすると、Visual Studio 2017 以降に NuGet 機能が自動的に含まれます。NET 関連のワークロード。
まだインストールされていない場合は、.NET CLI をインストールします。
Visual Studio 2017 以降の場合、.NET CLI は.NET Core 関連のワークロードと共に自動的にインストールされます。 それ以外の場合は、 .NET Core SDK をインストールして .NET CLI を取得します。 .NET CLI は、 SDK スタイルの形式 (SDK 属性) を使用する .NET プロジェクトに必要です。 Visual Studio 2017 以降の既定の .NET クラス ライブラリ テンプレートでは、SDK 属性が使用されます。
重要
SDK スタイル以外のプロジェクトを使用している場合は、「.NET Framework パッケージの作成と発行 (Visual Studio)」の手順に従ってパッケージを作成して発行します。 この記事では、.NET CLI をお勧めします。 NuGet CLI を使用して NuGet パッケージを発行することはできますが、この記事の手順の一部は SDK スタイルのプロジェクトと .NET CLI に固有のものです。 NuGet CLI は、SDK 以外のスタイルのプロジェクト (通常は.NET Framework) に使用されます。
まだ持っていない場合は、nuget.org で無料アカウントを登録します。 NuGet パッケージをアップロードする前に、アカウントを登録して確認する必要があります。
NuGet CLI をインストールする場合は、nuget.org からダウンロードします。nuget.exe ファイルを適切なフォルダーに追加し、そのフォルダーを PATH 環境変数に追加します。
クラス ライブラリ プロジェクトを作成する
パッケージ化するコードに既存の .NET クラス ライブラリ プロジェクトを使用することも、次のように作成することもできます。
Visual Studio で、 [ファイル]>[新規作成]>[プロジェクト] の順に選択します。
[ 新しいプロジェクトの作成 ] ウィンドウで、ドロップダウン リストで [C#]、[ Windows]、[ ライブラリ ] を選択します。
結果として得られるプロジェクト テンプレートの一覧で、[ クラス ライブラリ ] を選択し (説明、 .NET または .NET Standard を対象とするクラス ライブラリを作成するためのプロジェクト)、[ 次へ] を選択します。
[新しいプロジェクトの構成] ウィンドウで、[プロジェクト名] に「AppLogger」と入力し、[次へ] を選択します。
[ 追加情報 ] ウィンドウで、適切な フレームワークを選択し、[ 作成] を選択します。
選択するフレームワークがわからない場合は、最新のものが適切な選択肢であり、後で簡単に変更できます。 使用するフレームワークの詳細については、「 .NET 5.0 または .NET 6.0 と .NET Standard をターゲットにするタイミング」を参照してください。
プロジェクトが正しく作成されたことを確認するには、[ビルド ソリューションのビルド>] を選択します。 DLL は、デバッグ フォルダー (または代わりにその構成をビルドした場合はリリース フォルダー) 内にあります。
(省略可能)このクイックスタートでは、テンプレート クラス ライブラリでパッケージを作成するだけで十分であるため、NuGet パッケージの追加コードを記述する必要はありません。 ただし、パッケージの機能コードが必要な場合は、次のコードを含めます。
namespace AppLogger { public class Logger { public void Log(string text) { Console.WriteLine(text); } } }
パッケージ プロパティを構成する
プロジェクトを作成したら、次の手順に従って NuGet パッケージのプロパティを構成できます。
ソリューション エクスプローラーでプロジェクトを選択し、[プロジェクト><プロジェクト名>] [プロパティ] の順に選択します。ここで<、プロジェクト名>はプロジェクトの名前です。
[ パッケージ ] ノードを展開し、[ 全般] を選択します。
[パッケージ] ノードは、Visual Studio の SDK スタイルのプロジェクトにのみ表示されます。 SDK 以外のスタイルのプロジェクト (通常は.NET Framework) を対象としている場合は、プロジェクトを移行するか、「.NET Framework パッケージを作成して発行する」を参照してください。
公開用にビルドされたパッケージの場合は、Tagsプロパティに特に注意してください。これらのタグは他のユーザーがパッケージを検索して、パッケージの動作を理解するのに役立ちます。
パッケージに一意の パッケージ ID を 指定し、その他の必要なプロパティを入力します。 MSBuild プロパティ (SDK スタイルのプロジェクト) が .nuspec ファイル のプロパティにどのようにマップされるかを示すテーブルについては、「 パック ターゲット」を参照してください。 .nuspec ファイルのプロパティの説明については、.nuspec ファイルリファレンスを参照してください。 これらのプロパティはすべて、Visual Studio によってプロジェクト用に
.nuspec
作成されるマニフェストに含まれます。重要
パッケージには、nuget.org または使用しているホスト全体で一意の識別子を付ける必要があります。 そうでない場合、エラーが発生します。 このクイックスタートでは、発行手順によってパッケージがパブリックに表示されるため、 名前に Sample または Test を含めることをお勧めします。
(省略可能)AppLogger.csproj プロジェクト ファイルに直接プロパティを表示するには、[プロジェクトの編集] [プロジェクト> ファイル] の順に選択します。
AppLogger.csproj タブが読み込まれます。
このオプションは、SDK スタイルの属性を使用するプロジェクトに対して Visual Studio 2017 以降で使用できます。 以前のバージョンの Visual Studio では、プロジェクト ファイルを編集する前に、[ プロジェクト>のアンロード ] を選択する必要があります。
pack コマンドを実行する
プロジェクトから NuGet パッケージを作成するには、次の手順に従います。
[ビルド>Configuration Managerを選択し、[アクティブ なソリューションの構成] を [リリース] に設定します。
ソリューション エクスプローラーで AppLogger プロジェクトを選択し、[パック] を選択します。
Visual Studio によってプロジェクトがビルドされ、 .nupkg ファイルが作成されます。
[ 出力 ] ウィンドウで、パッケージ ファイルへのパスを含む詳細を確認します。 この例では、ビルドされたアセンブリは bin\Release\net6.0 にあり、 .NET 6.0 ターゲットに適合しています。
1>------ Build started: Project: AppLogger, Configuration: Release Any CPU ------ 1>AppLogger -> d:\proj\AppLogger\AppLogger\bin\Release\net6.0\AppLogger.dll 1>Successfully created package 'd:\proj\AppLogger\AppLogger\bin\Release\AppLogger.1.0.0.nupkg'. ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
メニューに [パック ] コマンドが表示されない場合、プロジェクトはおそらく SDK スタイルのプロジェクトではなく、NuGet CLI を使用する必要があります。 プロジェクトを移行して .NET CLI を使用するか、詳細な手順については、「.NET Framework パッケージを作成して発行する」を参照してください。
(オプション) ビルド時にパッケージを生成する
プロジェクトのビルド時に NuGet パッケージを自動的に生成するように Visual Studio を構成できます。
ソリューション エクスプローラーでプロジェクトを選択し、[プロジェクト><プロジェクト名>] [プロパティ] を選択します。ここで<、プロジェクト名>はプロジェクトの名前です (この場合は AppLogger)。
[ パッケージ ] ノードを展開し、[ 全般] を選択し、[ ビルド時に NuGet パッケージを生成する] を選択します。
注意
パッケージを自動的に生成すると、パックする余分な時間によって、プロジェクトの全体的なビルド時間が長くなります。
(省略可能)MSBuild でパックする
[パック] メニュー コマンドを使用する代わりに、NuGet 4.x+ と MSBuild 15.1 以降では、プロジェクトに必要なパッケージ データが含まれている場合にターゲットがサポートされますpack
。
ソリューション エクスプローラーでプロジェクトを開いた状態で、[ツール>] [コマンドライン>開発者コマンド プロンプト] の順に選択してコマンド プロンプトを開きます。
コマンド プロンプトがプロジェクト ディレクトリに開きます。
コマンド
msbuild -t:pack
を実行します。
詳細については、「Create a package using MSBuild」 (MSBuild を使用してパッケージを作成する) を参照してください。
パッケージを公開する
.nupkg ファイルを作成したら、.NET CLI または NuGet CLI と、nuget.org から取得した API キーを使用して、nuget.org に発行します。
Note
Nuget.org は、アップロードされたすべてのパッケージでウイルスをスキャンし、ウイルスが見つかるとパッケージを拒否します。 Nuget.org は、リストされているすべてのパッケージを定期的にスキャンします。
nuget.org に発行するパッケージは、リストを解除しない限り、他の開発者に公開されます。 パッケージを非公開でホストするには、「 独自の NuGet フィードをホストする」を参照してください。
API キーを取得する
NuGet パッケージを発行する前に、API キーを作成します。
nuget.org アカウントにサインイン するか 、アカウントをまだ お持ちでない場合は作成します。
右上にあるユーザー名を選択し、[ API キー] を選択します。
[ 作成] を選択し、キーの名前を指定します。
[ スコープの選択] で、[プッシュ] を選択 します。
[ パッケージ>の選択グロブ パターン] で、「*」と入力します。
[作成] を選択します
[ コピー] を選択して新しいキーをコピーします。
重要
- API キーは常にシークレットのままにします。 API キーは、すべてのユーザーが自分に代わってパッケージを管理できるパスワードのようなものです。 誤って表示された場合は、API キーを削除または再生成します。
- 後でもう一度キーをコピーできないため、キーを安全な場所に保存します。 [API キー] ページに戻ったら、キーを再生成してコピーする必要があります。 パッケージをプッシュする必要がなくなった場合は、API キーを削除することもできます。
スコープを 使用すると、さまざまな目的で個別の API キーを作成できます。 各キーには有効期限があり、特定のパッケージまたは glob パターンにキーのスコープを設定できます。 また、各キーのスコープを特定の操作に設定します。新しいパッケージとパッケージ バージョンのプッシュ、新しいパッケージ バージョンのみをプッシュする、またはリストを解除します。
スコープを使用すると、組織のパッケージを管理するさまざまなユーザーに対して API キーを作成して、必要なアクセス許可のみを持つことができます。
詳しくは、「スコープ設定された API キー」をご覧ください。
.NET CLI または NuGet CLI を使用して発行する
次の各 CLI ツールを使用すると、パッケージをサーバーにプッシュして発行できます。 CLI ツールのタブ ( .NET CLI または NuGet CLI) を選択します。
NuGet CLI を使用する代わりに、.NET CLI (dotnet.exe) を使用することをお勧めします。
.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 で右上にあるユーザー名を選択し、[ パッケージの管理] を選択します。
Note
パッケージのインデックスが作成され、他のユーザーが見つけることができる検索結果に表示されるまでに時間がかかる場合があります。 その間、パッケージは [一覧に表示されないパッケージ] の下に表示され、パッケージ ページに次のメッセージが表示されます。
これで、他の開発者がプロジェクトで使用できる nuget.org に NuGet パッケージを発行しました。
役に立たないパッケージ (空のクラス ライブラリで作成されたこのサンプル パッケージなど) を作成した場合、またはパッケージを表示しない場合は、パッケージの 一覧を外 して検索結果から非表示にすることができます。
パッケージが [パッケージの管理] ページの [発行済みパッケージ ] の下に表示されたら、 パッケージ の一覧の横にある鉛筆アイコンを選択します。
次のページで、[ リスト] を選択し、[ 検索結果で一覧表示 ] チェック ボックスをオフにして、[保存] を選択 します。
パッケージが [パッケージの管理] の [一覧に含まれないパッケージ] の下に表示され、検索結果に表示されなくなります。
Note
nuget.org でテスト パッケージが稼働しないようにするには、 の nuget.org テスト サイトに https://int.nugettest.orgプッシュします。int.nugettest.org にアップロードされたパッケージは保持されない場合があることに注意してください。
readme または別のファイルを追加する
パッケージに含めるファイルを直接指定するには、プロジェクト ファイルを編集し、 プロパティを追加します content
。
<ItemGroup>
<Content Include="readme.txt">
<Pack>true</Pack>
<PackagePath>\</PackagePath>
</Content>
</ItemGroup>
この例では、 プロパティはプロジェクト ルートの readme.txt という名前のファイルを指定します。 Visual Studio では、パッケージをインストールした直後に、そのファイルの内容がプレーン テキストとして表示されます。 依存関係としてインストールされたパッケージの Readme ファイルは表示されません。 たとえば、HtmlAgilityPack パッケージの readme を次に示します。
1 ----------------------------------------------------
2 ---------- Html Agility Pack Nuget Readme ----------
3 ----------------------------------------------------
4
5 ----Silverlight 4 and Windows Phone 7.1+ projects-----
6 To use XPATH features: System.Xml.Xpath.dll from the 3 Silverlight 4 SDK must be referenced.
7 This is normally found at
8 %ProgramFiles(x86)%\Microsoft SDKs\Microsoft SDKs\Silverlight\v4.0\Libraries\Client
9 or
10 %ProgramFiles%\Microsoft SDKs\Microsoft SDKs\Silverlight\v4.0\Libraries\Client
11
12 ----Silverlight 5 projects-----
13 To use XPATH features: System.Xml.Xpath.dll from the Silverlight 5 SDK must be referenced.
14 This is normally found at
15 %ProgramFiles(x86)%\Microsoft SDKs\Microsoft SDKs\Silverlight\v5.0\Libraries\Client
16 or
17 %ProgramFiles%\Microsoft SDKs\Microsoft SDKs\Silverlight\v5.0\Libraries\Client
Note
readme.txtをプロジェクト ファイルの プロパティに含content
めずにプロジェクト ルートにのみ追加した場合、パッケージには含まれません。
関連ビデオ
他の NuGet ビデオは、Channel 9 および YouTube でご覧いただけます。
Visual Studio .NET クラス ライブラリを使用して NuGet パッケージを作成しました。 次の記事に進み、Visual Studio .NET Frameworkを使用して NuGet パッケージを作成する方法について説明します。
NuGet が提供する必要がある詳細については、次の記事を参照してください。