dotnet restore

この記事の対象: ✔️ .NET Core 3.1 SDK 以降のバージョン

名前

dotnet restore - プロジェクトの依存関係とツールを復元します。

構文

dotnet restore [<ROOT>] [--configfile <FILE>] [--disable-build-servers]
    [--disable-parallel]
    [-f|--force] [--force-evaluate] [--ignore-failed-sources]
    [--interactive] [--lock-file-path <LOCK_FILE_PATH>] [--locked-mode]
    [--no-cache] [--no-dependencies] [--packages <PACKAGES_DIRECTORY>]
    [-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
    [--tl:[auto|on|off]] [--use-current-runtime, --ucr [true|false]]
    [--use-lock-file] [-v|--verbosity <LEVEL>]

dotnet restore -h|--help

説明

通常、.NET プロジェクトを使用すると、追加機能を備えた NuGet パッケージの外部ライブラリを参照できます。 これらの外部依存関係は、プロジェクト ファイル (.csproj または .vbproj) で参照されます。 dotnet restore コマンドを実行する場合は、.NET CLI によって、これらの依存関係の検索および必要に応じてダウンロードが、NuGet を使用して行われます。 また、プロジェクトで必要なすべての依存関係が相互に互換性があり、それらの間に競合がないことを確認します。 コマンドが完了すると、プロジェクトで必要なすべての依存関係は、ローカル キャッシュで使用可能になり、アプリケーションをビルドして実行する場合は .NET CLI で使用できるようになります。

NuGet の復元が必要な場合は次のコマンドによってそれが暗黙的に実行されるため、ほとんどの場合、dotnet restore コマンドを明示的に使用する必要はありません。

場合によっては、これらのコマンドを使用して NuGet の暗黙的な復元を実行するのが不便なことがあります。 たとえば、ビルド システムなど、一部の自動化されているシステムでは、ネットワーク使用状況を制御できるように、dotnet restore を明示的に呼び出し、復元のタイミングを制御する必要があります。 NuGet の暗黙的な復元が行われないようにするには、--no-restore フラグと併せ、これらのコマンドのいずれかを使用します。

Note

復元操作の間の署名付きパッケージの検証には、コード署名とタイムスタンプの両方に有効な証明書ルート ストアが必要です。 詳細については、「NuGet の署名済みパッケージの検証」を参照してください。

フィードを指定する

依存関係を復元するには、NuGet で、パッケージを配置するフィードが必要になります。 フィードは、通常、"nuget.config" 構成ファイルを通じて提供されます。 既定の構成ファイルは、.NET SDK がインストールされている場合に提供されます。 追加のフィードを指定するには、次のいずれかの操作を行います。

-s オプションを使用して nuget.config フィードをオーバーライドできます。

認証済みフィードの使用方法の詳細については、「認証済みフィードからのパッケージの使用」をご覧ください。

グローバル パッケージ フォルダー

依存関係については、--packages 引数を使用して復元操作中に復元されたパッケージの配置場所を指定することができます。 指定されていない場合は、既定の NuGet パッケージ キャッシュが使用されます。これは、すべてのオペレーティング システムのユーザーのホーム ディレクトリ内の .nuget/packages ディレクトリにあります。 たとえば、Linux の場合は /home/user1、Windows の場合は C:\Users\user1 です。

プロジェクト固有のツール

プロジェクト固有のツールについては、dotnet restore はまず、ツールがパックされているパッケージを復元し、プロジェクト ファイルに指定されているツールの依存関係の復元に進みます。

nuget.config の相違点

"nuget.config" がある場合、dotnet restore コマンドの動作はその設定に影響を受けます。 たとえば、"nuget.config" に globalPackagesFolder を設定すると、指定されたフォルダーに NuGet パッケージが復元されます。 これは dotnet restore コマンドで --packages オプションを指定する操作の代替方法です。 詳細については、「nuget の .config リファレンス」を参照してください。

dotnet restore によって無視される、特定の設定が 3 つあります。

  • bindingRedirects

    バインド リダイレクトは、<PackageReference> 要素では機能しません。また、.NET は、NuGet パッケージの <PackageReference> 要素のみをサポートしています。

  • solution

    これは、Visual Studio 固有の設定であり、.NET には適用されません。 .NET では、packages.config ファイルを使用しない代わりに NuGet パッケージの <PackageReference> 要素を使用します。

  • trustedSigners

    .NET 5.0.100 SDK では、クロスプラットフォーム パッケージの署名の検証のサポートが追加されました。

ワークロード マニフェストのダウンロード

このコマンドを実行すると、ワークロードの広告マニフェストの非同期バックグラウンド ダウンロードが開始されます。 このコマンドが終了してもダウンロードが実行されている場合、ダウンロードは停止します。 詳細については、「広告マニフェスト」を参照してください。

引数

  • ROOT

    復元するプロジェクト ファイルへのオプションのパスです。

[オプション]

  • -a|--arch <ARCHITECTURE>

    ターゲット アーキテクチャを指定します。 これは、ランタイム識別子 (RID) を設定する簡単な構文です。指定した値は、既定の RID と組み合わされます。 たとえば、win-x64 マシンで --arch x86 と指定すると、RID は win-x86 に設定されます。 このオプションを使用する場合は、-r|--runtime オプションは使用しないでください。 .NET 6 Preview 7 以降で利用できます。

  • --configfile <FILE>

    使用する NuGet 構成ファイル (nuget.config)。 指定した場合、このファイルの設定のみが使用されます。 指定しない場合、現在のディレクトリからの構成ファイルの階層が使用されます。 詳細については、「一般的な NuGet 構成」をご覧ください。

  • --disable-build-servers

    コマンドが永続的なビルド サーバーを無視するように強制します。 このオプションは、一貫してビルド キャッシュの使用をすべて無効にし、ゼロからのビルドを強制する手段として使用できます。 キャッシュに依存しないビルドを実行することは、キャッシュが何らかの理由で破損したか不正確な内容になった可能性がある場合に役立ちます。 .NET 7 SDK 以降で使用できます。

  • --disable-parallel

    複数プロジェクトの並行復元を無効にします。

  • --force

    最後の復元が成功した場合でも、すべての依存関係が強制的に解決されます。 このフラグを指定することは、project.assets.json ファイルを削除することと同じです。

  • --force-evaluate

    ロック ファイルが既に存在する場合でも、すべての依存関係を再評価するように強制的に復元します。

  • -?|-h|--help

    コマンドの使用方法を示した説明を出力します。

  • --ignore-failed-sources

    バージョン要件を満たしているパッケージがある場合は、失敗したソースに関する警告のみです。

  • --interactive

    コマンドを停止して、ユーザーの入力または操作のために待機させることができます。 たとえば、認証を完了する場合があります。

  • --lock-file-path <LOCK_FILE_PATH>

    プロジェクトのロック ファイルの書き込み先である出力場所。 既定でこれは PROJECT_ROOT\packages.lock.json です。

  • --locked-mode

    プロジェクト ロック ファイルの更新は許可されません。

  • --no-cache

    HTTP 要求をキャッシュしないように指定します。

  • --no-dependencies

    プロジェクト間 (P2P) 参照を含むプロジェクトを復元する場合は、参照ではなく、ルート プロジェクトを復元します。

  • --packages <PACKAGES_DIRECTORY>

    復元されるパッケージのディレクトリを指定します。

  • -r|--runtime <RUNTIME_IDENTIFIER>

    パッケージの復元用のランタイムを指定します。 これは、 .csproj ファイルの <RuntimeIdentifiers> タグに明示的にリストされていないランタイムのパッケージを復元するために使用されます。 ランタイム ID (RID) の一覧については、RID カタログに関するページをご覧ください。

  • -s|--source <SOURCE>

    復元操作時に使用する NuGet パッケージ ソースの URI を指定します。 この設定により、"nuget.config" ファイルに指定されているすべてのソースがオーバーライドされます。 このオプションを複数回指定することによって、複数のソースを指定できます。

  • --tl:[auto|on|off]

    ビルド出力にターミナル ロガーを使用するかどうかを指定します。 既定値は、ターミナル ログを有効にする前にまず環境を確認する、auto です。 環境チェックでは、ターミナルが最新の出力機能を使用でき、新しいロガーを有効にする前にリダイレクトされる標準出力を使用していないことを確認します。 on は、環境チェックをスキップし、ターミナル ログを有効にします。 off は、環境チェックをスキップし、既定のコンソール ロガーを使用します。

    ターミナル ロガーには、復元フェーズとそれに続くビルド フェーズが表示されます。 各フェーズにおいて、現在ビルド中のプロジェクトがターミナルの下部に表示されます。 ビルド中の各プロジェクトに対し、現在ビルド中の MSBuild ターゲットとそのターゲットに費やされた時間の両方が出力されます。 ビルドの詳細は、この情報を検索して確認できます。 プロジェクトのビルドが完了すると、次がキャプチャされた 1 つの "ビルドが完了しました" セクションが書き込まれます。

    • ビルドされたプロジェクトの名前。
    • ターゲット フレームワーク (複数ターゲットの場合)。
    • そのビルドの状態。
    • そのビルドの主な出力 (ハイパーリンク付き)。
    • そのプロジェクトに対して生成された診断。

    このオプションは、.NET 8 以降で使用できます。

  • --use-current-runtime, --ucr [true|false]

    RuntimeIdentifier をいずれかのマシンに基づいてプラットフォームの移植可能な RuntimeIdentifier に設定します。 これは、SelfContainedPublishAotPublishSelfContainedPublishSingleFilePublishReadyToRun などの RuntimeIdentifier を必要とするプロパティにより暗黙的に発生します。 プロパティが false に設定されていると、その暗黙の解決は発生しなくなります。

  • --use-lock-file

    プロジェクト ロック ファイルを生成して復元で使用できるようにします。

  • -v|--verbosity <LEVEL>

    コマンドの詳細レベルを設定します。 指定できる値は、q[uiet]m[inimal]n[ormal]d[etailed]、および diag[nostic] です。 既定値は、minimal です。 詳細については、「LoggerVerbosity」を参照してください。

使用例

  • 現在のディレクトリでプロジェクトの依存関係とツールを復元します。

    dotnet restore
    
  • 指定されたパスで見つかった app1 プロジェクトの依存関係とツールを復元します。

    dotnet restore ./projects/app1/app1.csproj
    
  • ソースとして指定されたファイル パスを使用して、現在のディレクトリでプロジェクトの依存関係とツールを復元します。

    dotnet restore -s c:\packages\mypackages
    
  • ソースとして指定された 2 つのファイル パスを使用して、現在のディレクトリでプロジェクトの依存関係とツールを復元します。

    dotnet restore -s c:\packages\mypackages -s c:\packages\myotherpackages
    
  • 詳細な出力を示して、現在のディレクトリでプロジェクトの依存関係とツールを復元します。

    dotnet restore --verbosity detailed
    

セキュリティの脆弱性の監査

.NET 8 以降では、dotnet restore に対して NuGet セキュリティ監査をオプトインできます。 この監査では、影響を受けるパッケージ名、脆弱性の重大度、詳細に関するアドバイザリへのリンクを含むセキュリティ脆弱性のレポートが生成されます。

セキュリティ監査をオプトインするには、プロジェクト ファイルで <NuGetAudit> MSBuild プロパティを true に設定します。 さらに、既知の脆弱性データセットを取得するには、NuGet.org の中央のレジストリがパッケージ ソースの 1 つとして定義されていることを確認します。

<packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>

<NuGetAuditLevel> MSBuild プロパティを設定することで、監査が失敗するレベルを構成できます。 指定できる値は、lowmoderatehigh、および critical です。 たとえば、中程度、高程度、および重要なアドバイザリのみを表示する場合は、プロパティを moderate に設定できます。