次の方法で共有


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.EntityFrameworkCoreToDo.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 newdotnet builddotnet rundotnet testdotnet publishdotnet 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
    

関連項目