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 がインストールされている場合に提供されます。 追加のフィードを指定するには、次のいずれかの操作を行います。
- プロジェクト ディレクトリに独自の nuget.config ファイルを作成します。 詳しくは、「一般的な NuGet 構成」と、この記事の「nuget.config の相違点」をご覧ください。
dotnet nuget add source
などのdotnet nuget
コマンドを使用します。
-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 つあります。
-
バインド リダイレクトは、
<PackageReference>
要素では機能しません。また、.NET は、NuGet パッケージの<PackageReference>
要素のみをサポートしています。 -
これは、Visual Studio 固有の設定であり、.NET には適用されません。 .NET では、
packages.config
ファイルを使用しない代わりに NuGet パッケージの<PackageReference>
要素を使用します。 -
.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
に設定します。 これは、SelfContained
、PublishAot
、PublishSelfContained
、PublishSingleFile
、PublishReadyToRun
などの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 プロパティをプロジェクト ファイルに false
するように設定します。
既知の脆弱性データセットを取得するには、NuGet.org 中央レジストリがパッケージ ソースの 1 つとして定義されていることを確認します。
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
<NuGetAuditLevel>
MSBuild プロパティを設定することで、監査が失敗するレベルを構成できます。 指定できる値は、low
、moderate
、high
、および critical
です。 たとえば、中程度、高程度、および重要なアドバイザリのみを表示する場合は、プロパティを moderate
に設定できます。
.NET 9 以降、NuGet は既定で direct と transitive パッケージ参照の両方を監査します。 .NET 8 では、 direct パッケージ参照のみが監査されます。 モードを変更するには、 <NuGetAuditMode>
MSBuild プロパティを direct
または all
に設定します。
.NET