この記事の対象: ✔️ .NET 6 SDK 以降のバージョン
名前
dotnet restore - プロジェクトの依存関係とツールを復元します。
構文
dotnet restore [<PROJECT>|<SOLUTION>|<FILE>]
[-a|--arch <ARCHITECTURE>] [--configfile <FILE>] [--disable-build-servers]
[--disable-parallel] [-f|--force] [--force-evaluate]
[--ignore-failed-sources] [--interactive] [--lock-file-path <LOCK_FILE_PATH>]
[--locked-mode] [--no-dependencies] [--no-http-cache]
[--os <OS>] [--packages <PACKAGES_DIRECTORY>]
[-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
[--tl:[auto|on|off]] [--ucr|--use-current-runtime] [--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 フラグと併せ、これらのコマンドのいずれかを使用します。
注
復元操作の間の署名付きパッケージの検証には、コード署名とタイムスタンプの両方に有効な証明書ルート ストアが必要です。 詳細については、「 NuGet 署名済みパッケージの検証」を参照してください。
フィードを指定する
依存関係を復元するには、NuGet で、パッケージを配置するフィードが必要になります。 フィードは、通常、"nuget.config" 構成ファイルを通じて提供されます。 既定の構成ファイルは、.NET SDK がインストールされている場合に提供されます。 追加のフィードを指定するには、次のいずれかの操作を行います。
- プロジェクト ディレクトリに独自の nuget.config ファイルを作成します。 詳しくは、「一般的な NuGet 構成」と、この記事の「nuget.config の相違点」をご覧ください。
-
dotnet nugetなどのdotnet nuget add sourceコマンドを使用します。
オプションを使用して -s フィードをオーバーライドできます。
認証済みフィードの使用方法の詳細については、「認証済みフィードからのパッケージの使用」をご覧ください。
グローバル パッケージ フォルダー
依存関係については、--packages 引数を使用して復元操作中に復元されたパッケージの配置場所を指定することができます。 指定されていない場合は、既定の NuGet パッケージ キャッシュが使用されます。これは、すべてのオペレーティング システムのユーザーのホーム ディレクトリ内の .nuget/packages ディレクトリにあります。 たとえば、Linux の場合は /home/user1、Windows の場合は C:\Users\user1 です。
プロジェクト固有のツール
プロジェクト固有のツールについては、dotnet restore はまず、ツールがパックされているパッケージを復元し、プロジェクト ファイルに指定されているツールの依存関係の復元に進みます。
nuget.config の相違点
"dotnet restore" がある場合、 コマンドの動作はその設定に影響を受けます。 たとえば、"globalPackagesFolder" に を設定すると、指定されたフォルダーに NuGet パッケージが復元されます。 これは --packages コマンドで dotnet restore オプションを指定する操作の代替方法です。 詳細については、「nuget の .config リファレンス」を参照してください。
dotnet restore によって無視される、特定の設定が 3 つあります。
-
バインド リダイレクトは、
<PackageReference>要素では機能しません。また、.NET は、NuGet パッケージの<PackageReference>要素のみをサポートしています。 -
これは、Visual Studio 固有の設定であり、.NET には適用されません。 .NET では、
packages.configファイルを使用しない代わりに NuGet パッケージの<PackageReference>要素を使用します。 -
.NET 5.0.100 SDK では、クロスプラットフォーム パッケージの署名の検証のサポートが追加されました。
ワークロード マニフェストのダウンロード
このコマンドを実行すると、ワークロードの広告マニフェストの非同期バックグラウンド ダウンロードが開始されます。 このコマンドが終了してもダウンロードが実行されている場合、ダウンロードは停止します。 詳細については、「広告マニフェスト」を参照してください。
引数
PROJECT | SOLUTION | FILE
操作するプロジェクトまたはソリューション、または C# (ファイル ベースのアプリ) ファイル。 ファイルが指定されていない場合、MSBuild は現在のディレクトリでプロジェクトまたはソリューションを検索します。
PROJECTは、C#、F#、または Visual Basic プロジェクト ファイルのパスとファイル名、または C#、F#、または Visual Basic プロジェクト ファイルを含むディレクトリへのパスです。SOLUTIONは、ソリューション ファイルのパスとファイル名 (.slnx 拡張子.sln または)、またはソリューション ファイルを含むディレクトリへのパスです。FILEは.NET 10 で追加された引数です。 ファイル ベースのアプリのパスとファイル名。 ファイル ベースのアプリは、対応するプロジェクト (.csproj) ファイルなしでビルドおよび実行される 1 つのファイル内に含まれています。 詳細については、「 ファイル ベースの C# アプリをビルドする」を参照してください。
オプション
-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ロック ファイルが既に存在する場合でも、すべての依存関係を再評価するように強制的に復元します。
--ignore-failed-sourcesバージョン要件を満たしているパッケージがある場合は、失敗したソースに関する警告のみです。
--interactiveコマンドを停止して、ユーザーの入力または操作のために待機させることができます。 たとえば、認証を完了する場合があります。
--lock-file-path <LOCK_FILE_PATH>プロジェクトのロック ファイルの書き込み先である出力場所。 既定でこれは PROJECT_ROOT\packages.lock.json です。
--locked-modeプロジェクト ロック ファイルの更新は許可されません。
--no-dependenciesプロジェクト間 (P2P) 参照を含むプロジェクトを復元する場合は、参照ではなく、ルート プロジェクトを復元します。
--no-http-cacheパッケージの HTTP キャッシュを無効にします。
--osターゲット オペレーティング システム (OS) を指定します。 これはランタイム識別子 (RID) を設定するための省略形の構文で、指定された値が既定の RID と組み合わされます。 たとえば、
win-x64マシンで--os linuxと指定すると、RID はlinux-x64に設定されます。.NET SDK 10.0.100 で導入されました
--packages <PACKAGES_DIRECTORY>復元されるパッケージのディレクトリを指定します。
-r|--runtime <RUNTIME_IDENTIFIER>パッケージの復元用のランタイムを指定します。 これは、
<RuntimeIdentifiers>ファイルの タグに明示的にリストされていないランタイムのパッケージを復元するために使用されます。 ランタイム ID (RID) の一覧については、RID カタログに関するページをご覧ください。-s|--source <SOURCE>復元操作時に使用する NuGet パッケージ ソースの URI を指定します。 この設定により、"nuget.config" ファイルに指定されているすべてのソースがオーバーライドされます。 このオプションを複数回指定することによって、複数のソースを指定できます。
--ucr|--use-current-runtime現在のランタイムをターゲット ランタイムとして使用します。
--use-lock-fileプロジェクト ロック ファイルを生成して復元で使用できるようにします。
--tl:[auto|on|off]ビルド出力に ターミナル ロガー を使用するかどうかを指定します。 既定値は、ターミナル ログを有効にする前にまず環境を確認する、
autoです。 環境チェックでは、ターミナルが最新の出力機能を使用でき、新しいロガーを有効にする前にリダイレクトされる標準出力を使用していないことを確認します。onは、環境チェックをスキップし、ターミナル ログを有効にします。offは、環境チェックをスキップし、既定のコンソール ロガーを使用します。ターミナル ロガーには、復元フェーズとビルド フェーズが表示されます。 各フェーズにおいて、現在ビルド中のプロジェクトがターミナルの下部に表示されます。 ビルド中の各プロジェクトに対し、現在ビルド中の MSBuild ターゲットとそのターゲットに費やされた時間の両方が出力されます。 ビルドの詳細は、この情報を検索して確認できます。 プロジェクトのビルドが完了すると、次がキャプチャされた 1 つの "ビルドが完了しました" セクションが書き込まれます。
- ビルドされたプロジェクトの名前。
- ターゲット フレームワーク (複数ターゲットの場合)。
- そのビルドの状態。
- そのビルドの主な出力 (ハイパーリンク付き)。
- そのプロジェクトに対して生成された診断。
このオプションは、.NET 8 以降で使用できます。
-v|--verbosity <LEVEL>コマンドの詳細レベルを設定します。 指定できる値は、
q[uiet]、m[inimal]、n[ormal]、d[etailed]、およびdiag[nostic]です。 既定値は、minimalです。 詳細については、「LoggerVerbosity」を参照してください。
-?|-h|--helpコマンドの使用方法を示した説明を出力します。
使用例
現在のディレクトリでプロジェクトの依存関係とツールを復元します。
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 8 および .NET 9 では、 既定では直接 パッケージ参照のみが監査されます。 .NET 10 以降、NuGet は既定で 直接 および 推移的な パッケージ参照の両方を監査します。 モードを変更するには、 <NuGetAuditMode> MSBuild プロパティを direct または all に設定します。
.NET