この記事の対象: ✔️ .NET 6 SDK 以降のバージョン
名前
dotnet run -- 明示的なコンパイルや起動コマンドなしで、ソース コードを実行します。
構文
dotnet run [<applicationArguments>]
[-a|--arch <ARCHITECTURE>] [--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [-e|--environment <KEY=VALUE>]
[--file <FILE_PATH>] [-f|--framework <FRAMEWORK>] [--force] [--interactive]
[--launch-profile <NAME>] [--no-build] [--no-dependencies]
[--no-launch-profile] [--no-restore] [--os <OS>] [--project <PATH>]
[-r|--runtime <RUNTIME_IDENTIFIER>] [--tl:[auto|on|off]]
[-v|--verbosity <LEVEL>] [[--] [application arguments]]
dotnet run -h|--help
説明
dotnet run コマンドは、1 つのコマンドを使用して、ソース コードからアプリケーションを実行する便利なオプションを提供します。 コマンド ラインからの短期間の反復開発に便利です。 このコマンドは dotnet build コマンドに依存し、コードをビルドします。 ビルドの要件は、 dotnet run にも適用されます。
Note
dotnet run では考慮される /property:property=value のような引数は、dotnet build では考慮されません。
出力ファイルは既定の場所である bin/<configuration>/<target> に書き込まれます。 たとえば、netcoreapp2.1 というアプリケーションがあり、dotnet run を実行する場合、bin/Debug/netcoreapp2.1 に出力されます。 必要に応じて、ファイルは上書きされます。 一時ファイルは obj ディレクトリに置かれます。
フレームワークを複数指定するプロジェクトの場合、dotnet run オプションを使用してフレームワークを指定しない限り、-f|--framework <FRAMEWORK> を実行するとエラーが発生します。
dotnet run コマンドは、ビルド済みのアセンブリではなく、プロジェクトのコンテキストで使用されます。 代わりにフレームワークに依存するアプリケーション DLL の実行を試みる場合は、コマンドなしで dotnet を実行する必要があります。 たとえば、myapp.dll を実行する場合は、次のコードを使用します。
dotnet myapp.dll
dotnet ドライバーの詳細については、「.NET CLI の概要」を参照してください。
アプリケーションを実行するため、dotnet run コマンドは、NuGet キャッシュから共有ランタイムの外にあるアプリケーションの依存関係を解決します。 このコマンドではキャッシュされた依存関係を使用するため、dotnet run を使用してアプリケーションを実稼働環境で実行することは推奨されません。 代わりに、 コマンドを使用してdotnet publishし、発行された出力を展開します。
暗黙的な復元
復元を必要とするすべてのコマンド (dotnet restore、dotnet new、dotnet build、dotnet run、dotnet test、dotnet publish など) によって暗黙的に実行されるため、dotnet pack を実行する必要がなくなりました。 暗黙的な復元を無効にするには、--no-restore オプションを使用します。
dotnet restoreなどの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore は引き続き有用なコマンドです。
NuGet フィードの管理方法については、dotnet restore のドキュメントをご覧ください。
このコマンドには dotnet restore オプションを指定できますが、--source のように長い形式で指定する必要があります。
-s のような短い形式のオプションはサポートされていません。
ワークロード マニフェストのダウンロード
このコマンドを実行すると、ワークロードの広告マニフェストの非同期バックグラウンド ダウンロードが開始されます。 このコマンドが終了してもダウンロードが実行されている場合、ダウンロードは停止します。 詳細については、「広告マニフェスト」を参照してください。
論争
<applicationArguments>
実行中のアプリケーションに渡される引数。
dotnet runによって認識されない引数は、アプリケーションに渡されます。
dotnet runの引数をアプリケーションの引数から分離するには、-- オプションを使用します。
オプション
--実行中のアプリケーションの引数と
dotnet runの引数を区切ります。 この区切り記号の後の引数はすべて実行中のアプリケーションに渡されます。-
-a|--arch <ARCHITECTURE>ターゲット アーキテクチャを指定します。 これは、ランタイム識別子 (RID) を設定する簡単な構文です。指定した値は、既定の RID と組み合わされます。 たとえば、
win-x64マシンで--arch x86と指定すると、RID はwin-x86に設定されます。 このオプションを使用する場合は、-r|--runtimeオプションは使用しないでください。 .NET 6 Preview 7 以降で利用できます。 -
--artifacts-path <ARTIFACTS_DIR>実行されたコマンドからのすべてのビルド出力ファイルは、指定されたパスの下のサブフォルダーに配置され、プロジェクトで区切られます。 詳細については、「 Artifacts 出力レイアウトを参照してください。 .NET 8 SDK 以降で利用可能です。
-
-c|--configuration <CONFIGURATION>ビルド構成を定義します。 ほとんどのプロジェクトの既定値は
Debugですが、プロジェクトでビルド構成設定をオーバーライドできます。 -
--disable-build-servers永続的なビルド サーバーを無視するようにコマンドを強制します。 このオプションは、ビルド キャッシュのすべての使用を無効にする一貫した方法を提供します。これにより、ビルドが最初から強制的に実行されます。 キャッシュに依存しないビルドは、何らかの理由でキャッシュが破損している、または正しくない可能性がある場合に便利です。 .NET 7 SDK 以降で使用できます。
-e|--environment <KEY=VALUE>コマンドによって実行されるプロセス内の指定された環境変数を設定します。 指定した環境変数は、 プロセスには適用
dotnet run。このオプションで渡される環境変数は、アンビエント環境変数、System.CommandLine
envディレクティブ、および選択した起動プロファイルからのenvironmentVariablesよりも優先されます。 詳細については、「環境変数」を参照してください。(このオプションは .NET SDK 9.0.200 で追加されました)。
-f|--framework <FRAMEWORK>指定されたフレームワークを使用してアプリをビルドし、実行します。 フレームワークはプロジェクト ファイルに指定する必要があります。
--file <FILE_PATH>実行するファイル ベースのアプリへのパス。 パスが指定されていない場合は、現在のディレクトリを使用してファイルを検索して実行します。 ファイル ベースのアプリの詳細については、「 ファイル ベースの C# アプリをビルドする」を参照してください。
Unix では、
dotnet runの代わりにコマンド ラインでソース ファイル名を使用して、ファイル ベースのアプリを直接実行できます。 まず、ファイルに実行アクセス許可があることを確認します。 次に、ファイルの最初の行として shebang 行#!を追加します。次に例を示します。#!/usr/bin/env dotnet runその後、コマンド ラインから直接ファイルを実行できます。
./ConsoleApp.cs.NET SDK 10.0.100 で導入されました。
--force最後の復元が成功した場合でも、すべての依存関係が強制的に解決されます。 このフラグを指定することは、project.assets.json ファイルを削除することと同じです。
-
--interactiveコマンドを停止して、ユーザーの入力または操作のために待機させることができます。 たとえば、認証を完了する場合があります。
--launch-profile <NAME>アプリケーションを起動する場合に使用する起動プロファイル (存在する場合) の名前です。 起動プロファイルは launchSettings.json ファイル内に定義されており、通常は、
Development、Staging、Productionと呼ばれています。 詳細については、「Working with multiple environments」 (複数の環境での使用) をご覧ください。--no-build実行前にプロジェクトをビルドしません。 また、
--no-restoreフラグが暗黙的に設定されます。--no-cache最新のチェックをスキップし、実行する前に常にプログラムをビルドします。
--no-dependenciesプロジェクト間 (P2P) 参照を含むプロジェクトを復元する場合は、参照ではなく、ルート プロジェクトを復元します。
--no-launch-profileアプリケーションを構成するための launchSettings.json の使用を試みません。
--no-restoreコマンドを実行するときに、暗黙的な復元を実行しません。
-
--no-self-contained--self-contained falseに相当します。 -
--os <OS>ターゲット オペレーティング システム (OS) を指定します。 これは、ランタイム識別子 (RID) を設定する簡単な構文です。指定した値は、既定の RID と組み合わされます。 たとえば、
win-x64マシンで--os linuxと指定すると、RID はlinux-x64に設定されます。 このオプションを使用する場合は、-r|--runtimeオプションは使用しないでください。 .NET 6 以降で使用可能です。 --project <PATH>実行するプロジェクト ファイルのパスを指定します (フォルダー名または完全なパス)。 指定しない場合は、既定で現在のディレクトリに設定されます。
.NET 6 SDK 以降では、
-pの--project省略形が非推奨となりました。 限られた期間、非推奨の警告にもかかわらず、-pは引き続き--projectに使用できます。 オプションに指定された引数に=が含まれていない場合、コマンドは-pを--projectの短縮形として受け付けます。 そうではない場合、コマンドによって-pは--propertyの短縮形と見なされます。 この-pに--projectを使用する柔軟な方法は、.NET 7 で段階的に廃止される予定です。--property:<NAME>=<VALUE>1 つ以上の MSBuild プロパティを設定します。 複数のプロパティを指定するには、セミコロンで区切るか、オプションを繰り返します。
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>短い形式の
-pを--propertyに使用することができます。 オプションに指定された引数に=が含まれている場合、-pは--propertyの短縮形として受け付けられます。 そうではない場合、コマンドによって-pは--projectの短縮形と見なされます。MSBuild プロパティを設定するのではなく、
--propertyをアプリケーションに渡すには、--の構文区切り記号の後にオプションを指定します。dotnet run -- --property name=value-r|--runtime <RUNTIME_IDENTIFIER>パッケージを復元するターゲット ランタイムを指定します。 ランタイム ID (RID) の一覧については、RID カタログに関するページをご覧ください。
-
--sc|--self-containedターゲット コンピューターにランタイムをインストールする必要がないように、アプリケーションで .NET ランタイムを発行します。 既定値は、
trueです。 -
--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コマンドの使用方法を示した説明を出力します。
環境変数
起動したアプリケーションに環境変数を適用できるメカニズムは 4 つあります。
- コマンドの実行時にオペレーティング システムからのアンビエント環境変数。
- System.CommandLine
envディレクティブ ([env:key=value]など)。 これらは、dotnet runによって実行されるプロジェクトだけでなく、dotnet runプロセス全体に適用されます。 -
environmentVariablesプロジェクトのlaunchSettings.json ファイル内の選択した起動プロファイル (-lp) (存在する場合)。 これらは、dotnet runによって実行されるプロジェクトに適用されます。 -
-e|--environmentCLI オプション値 (.NET SDK バージョン 9.0.200 で追加)。 これらは、dotnet runによって実行されるプロジェクトに適用されます。
環境はこのリストと同じ順序で構築されるため、 -e|--environment オプションの優先順位が最も高くなります。
使用例
現在のディレクトリのプロジェクトを実行します。
dotnet run現在のディレクトリで、指定したファイル ベースのアプリを実行します。
dotnet run --file ConsoleApp.cs.NET SDK 10.0.100 でファイル ベースのアプリのサポートが追加されました。
指定されたプロジェクトを実行します。
dotnet run --project ./projects/proj1/proj1.csprojプロジェクトを現在のディレクトリで実行し、リリース構成を指定します。
dotnet run --property:Configuration=Release現在のディレクトリのプロジェクトを実行します (この例では、空の
--helpオプションが使用されているため、--引数がアプリケーションに渡されます)。dotnet run --configuration Release -- --help最小限の出力のみを表示して、現在のディレクトリでプロジェクトの依存関係とツールを復元し、プロジェクトを実行します。
dotnet run --verbosity m指定したフレームワークを使用して現在のディレクトリでプロジェクトを実行し、引数をアプリケーションに渡します。
dotnet run -f net6.0 -- arg1 arg2次の例では、3 つの引数がアプリケーションに渡されます。
-を使用して 1 つの引数が渡され、--後に 2 つの引数が渡されます。dotnet run -f net6.0 -arg1 -- arg2 arg3
.NET