dotnet add package
この記事の対象: ✔️ .NET Core 3.1 SDK 以降のバージョン
名前
dotnet add package
- プロジェクト ファイルにパッケージ参照を追加または更新します。
構文
dotnet add [<PROJECT>] package <PACKAGE_NAME>
[-f|--framework <FRAMEWORK>] [--interactive]
[-n|--no-restore] [--package-directory <PACKAGE_DIRECTORY>]
[--prerelease] [-s|--source <SOURCE>] [-v|--version <VERSION>]
dotnet add package -h|--help
説明
dotnet add package
コマンドは、プロジェクト ファイルにパッケージ参照を追加または更新する便利なオプションを提供します。 このコマンドを実行すると、パッケージがプロジェクト内のフレームワークと互換性があることを確認する互換性チェックが行われます。 チェックに合格し、パッケージがプロジェクト ファイルで参照されていない場合は、プロジェクト ファイルに <PackageReference>
要素が追加されます。 チェックに合格し、パッケージがプロジェクト ファイルで既に参照されている場合、<PackageReference>
要素は最新の互換性のあるバージョンに更新されます。 プロジェクト ファイルが更新されると、dotnet restore が実行されます。
たとえば、Microsoft.EntityFrameworkCore
を ToDo.csproj に追加すると、次のような出力が生成されます。
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" />
プロジェクトが Central Package Management (CPM) にオンボードされている場合、Directory.Packages.props file
の<PackageVersion>
要素が追加または更新され、<PackageReference>
要素がプロジェクト ファイルに追加されます。
現在、次のシナリオがサポートされています。 これらの例では、 Microsoft.EntityFrameworkCore
の最新バージョンが 6.0.4 であることを前提としています。 CPM に関連するその他のシナリオについては、この設計仕様に記載されています。
シナリオ 1: プロジェクト ファイルに <PackageReference>
が存在せず、 <PackageVersion>
要素が Directory.Packages.props file
に存在せず、バージョン引数がコマンド ラインから渡されない。
実行される CLI コマンド: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore
<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 add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4
<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 add ToDo.csproj package Microsoft.EntityFrameworkCore
<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 add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4
<PackageVersion>
要素がDirectory.Packages.props file
に追加されます。
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />
<PackageReference>
要素がプロジェクト ファイルに追加されます。
<PackageReference Include="Microsoft.EntityFrameworkCore" />
暗黙的な復元
復元を必要とするすべてのコマンド (dotnet new
、dotnet build
、dotnet run
、dotnet test
、dotnet publish
、dotnet pack
など) によって暗黙的に実行されるため、dotnet restore
を実行する必要がなくなりました。 暗黙的な復元を無効にするには、--no-restore
オプションを使用します。
dotnet restore
などの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore
は引き続き有用なコマンドです。
NuGet フィードの管理方法については、dotnet restore
のドキュメントをご覧ください。
引数
PROJECT
プロジェクト ファイルを指定します。 指定されていない場合、現在のディレクトリで検索されます。
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
プレリリース パッケージのインストールを許可します。 .NET Core 5 SDK 以降で利用できます
-s|--source <SOURCE>
復元操作時に使用する NuGet パッケージ ソースの URI。
-v|--version <VERSION>
パッケージのバージョン。 NuGet パッケージのバージョン管理に関するページを参照してください。
使用例
Microsoft.EntityFrameworkCore
NuGet パッケージをプロジェクトに追加する:dotnet add package Microsoft.EntityFrameworkCore
特定バージョンのパッケージをプロジェクトに追加する:
dotnet add ToDo.csproj package Microsoft.Azure.DocumentDB.Core -v 1.0.0
特定の NuGet ソースを使用してパッケージを追加する:
dotnet add package Microsoft.AspNetCore.StaticFiles -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json
関連項目
.NET