この記事の対象: ✔️ .NET 6 SDK 以降のバージョン
名前
              dotnet package add - プロジェクト ファイル内のパッケージ参照を追加または更新します。
注
.NET 9 SDK 以前を使用している場合は、代わりに "動詞優先" フォーム (dotnet add package) を使用します。 .NET 10 では、"名詞第 1" フォームが導入されました。 詳細については、「 一貫性のあるコマンド順序」を参照してください。
概要
dotnet package add <PACKAGE_NAME>
    [-f|--framework <FRAMEWORK>] [--interactive] [--project <PROJECT>]
    [-n|--no-restore] [--package-directory <PACKAGE_DIRECTORY>]
    [--prerelease] [-s|--source <SOURCE>] [-v|--version <VERSION>]
dotnet package add -h|--help
説明
              dotnet package add コマンドは、プロジェクト ファイル内のパッケージ参照を追加または更新するための便利なオプションを提供します。 コマンドを実行すると、パッケージがプロジェクト内のフレームワークと互換性があることを確認するための互換性チェックが行われます。 チェックに合格し、パッケージがプロジェクト ファイルで参照されていない場合は、 <PackageReference> 要素がプロジェクト ファイルに追加されます。 チェックに合格し、パッケージがプロジェクト ファイルで既に参照されている場合、 <PackageReference> 要素は最新の互換性のあるバージョンに更新されます。 プロジェクト ファイルが更新されると、 dotnet restore が実行されます。
たとえば、Microsoft.EntityFrameworkCore にを追加すると、次の例のような出力が生成されます。
  Determining projects to restore...
  Writing C:\Users\username\AppData\Local\Temp\tmp24A8.tmp
info : Adding PackageReference for package 'Microsoft.EntityFrameworkCore' into project 'C:\ToDo\ToDo.csproj'.
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/index.json
info :   GET https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/registrations2-semver2/microsoft.entityframeworkcore/index.json
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/0.0.1-alpha/3.1.3.json
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/3.1.4/7.0.0-preview.2.22153.1.json
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/7.0.0-preview.3.22175.1/7.0.0-preview.3.22175.1.json
info :   NotFound https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/registrations2-semver2/microsoft.entityframeworkcore/index.json 257ms
info : Restoring packages for C:\ToDo\ToDo.csproj...
info : Package 'Microsoft.EntityFrameworkCore' is compatible with all the specified frameworks in project 'C:\ToDo\ToDo.csproj'.
info : PackageReference for package 'Microsoft.EntityFrameworkCore' version '6.0.4' added to file 'C:\ToDo\ToDo.csproj'.
info : Writing assets file to disk. Path: C:\ToDo\obj\project.assets.json
log  : Restored C:\ToDo\ToDo.csproj (in 171 ms).
              ToDo.csproj ファイルに、参照先パッケージの<PackageReference>要素が含まれるようになりました。
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
プロジェクトが中央パッケージ管理 (CPM) にオンボードされている場合、<PackageVersion>のDirectory.Packages.props file要素が追加または更新され、<PackageReference>要素がプロジェクト ファイルに追加されます。
現在、次のシナリオがサポートされています。 これらの例では、 Microsoft.EntityFrameworkCore の最新バージョンが 6.0.4 であることを前提としています。 CPM に関連するその他のシナリオ については、この設計仕様に記載されています。
シナリオ 1: プロジェクト ファイルに <PackageReference> が存在せず、 <PackageVersion> 要素が Directory.Packages.props fileに存在せず、バージョン引数がコマンド ラインから渡されない。
実行される CLI コマンド: dotnet package add Microsoft.EntityFrameworkCore --project ToDo.csproj
              <PackageVersion>要素がDirectory.Packages.props fileに追加されます。
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
              <PackageReference>要素がプロジェクト ファイルに追加されます。
<PackageReference Include="Microsoft.EntityFrameworkCore" />
シナリオ 2: <PackageReference> がプロジェクト ファイルに存在せず、 <PackageVersion> 要素が Directory.Packages.props fileに存在せず、バージョン引数がコマンド ラインから渡されます。
実行される CLI コマンド: dotnet package add Microsoft.EntityFrameworkCore --version 5.0.4 --project ToDo.csproj
              <PackageVersion>要素がDirectory.Packages.props fileに追加されます。
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />
              <PackageReference>要素がプロジェクト ファイルに追加されます。
<PackageReference Include="Microsoft.EntityFrameworkCore" />
シナリオ 3: プロジェクト ファイルに <PackageReference> が存在せず、 <PackageVersion> 要素が Directory.Packages.props fileに存在し、バージョン引数がコマンド ラインから渡されない。
実行される CLI コマンド: dotnet package add Microsoft.EntityFrameworkCore --project ToDo.csproj
              <PackageVersion>要素がDirectory.Packages.props fileに追加されます。
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
              <PackageReference>要素がプロジェクト ファイルに追加されます。
<PackageReference Include="Microsoft.EntityFrameworkCore" />
シナリオ 4: <PackageReference> はプロジェクト ファイルに存在せず、 <PackageVersion> 要素は Directory.Packages.props fileに存在し、バージョン引数はコマンド ラインから渡されます。
実行される CLI コマンド: dotnet package add Microsoft.EntityFrameworkCore --version 5.0.4 --project ToDo.csproj
              <PackageVersion>要素がDirectory.Packages.props fileに追加されます。
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />
              <PackageReference>要素がプロジェクト ファイルに追加されます。
<PackageReference Include="Microsoft.EntityFrameworkCore" />
暗黙的な復元
復元を必要とするすべてのコマンド (dotnet restore、dotnet new、dotnet build、dotnet run、dotnet test、dotnet publish など) によって暗黙的に実行されるため、dotnet pack を実行する必要がなくなりました。 暗黙的な復元を無効にするには、--no-restore オプションを使用します。
              dotnet restoreなどの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore は引き続き有用なコマンドです。
NuGet フィードの管理方法については、dotnet restore のドキュメントをご覧ください。
議論
- PROJECT- プロジェクト ファイルを指定します。 指定しない場合、コマンドは現在のディレクトリを検索して 1 つを検索します。 
- PACKAGE_NAME- 追加するパッケージ参照。 
オプション
- -f|--framework <FRAMEWORK>- 特定のフレームワークを対象とする場合にのみ、パッケージ参照を追加 します。 
- -?|-h|--help- コマンドの使用方法を示した説明を出力します。 
- --interactive- コマンドを停止して、ユーザーの入力または操作のために待機させることができます。 たとえば、認証を完了する場合があります。 
- -n|--no-restore- 復元プレビューと互換性チェックを実行せずにパッケージ参照を追加します。 
- --package-directory <PACKAGE_DIRECTORY>- パッケージを復元するディレクトリ。 既定のパッケージの復元場所は、Windows では - %userprofile%\.nuget\packagesされ、macOS と Linux では- ~/.nuget/packagesされます。 詳細については、「 NuGet でのグローバル パッケージ、キャッシュ、および一時フォルダーの管理」を参照してください。
- --prerelease- プレリリース パッケージのインストールを許可します。 
- -s|--source <SOURCE>- 復元操作中に使用する NuGet パッケージ ソースの URI。 
- -v|--version <VERSION>- パッケージのバージョン。 NuGet パッケージのバージョン管理を参照してください。 
例示
- NuGet パッケージ - Microsoft.EntityFrameworkCoreプロジェクトに追加します。- dotnet package add Microsoft.EntityFrameworkCore
- 特定のバージョンのパッケージをプロジェクトに追加します。 - dotnet package add Microsoft.Azure.DocumentDB.Core -v 1.0.0 --project ToDo.csproj
- 特定の NuGet ソースを使用してパッケージを追加します。 - dotnet package add Microsoft.AspNetCore.StaticFiles -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json
こちらもご覧ください
.NET