dotnet run

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

名前

dotnet run -- 明示的なコンパイルや起動コマンドなしで、ソース コードを実行します。

構文

dotnet run [-a|--arch <ARCHITECTURE>] [-c|--configuration <CONFIGURATION>]
    [-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 にも適用されます。

注意

dotnet build では考慮される /property:property=value のような引数は、dotnet run では考慮されません。

出力ファイルは既定の場所である bin/<configuration>/<target> に書き込まれます。 たとえば、netcoreapp2.1 というアプリケーションがあり、dotnet run を実行する場合、bin/Debug/netcoreapp2.1 に出力されます。 必要に応じて、ファイルは上書きされます。 一時ファイルは obj ディレクトリに置かれます。

フレームワークを複数指定するプロジェクトの場合、-f|--framework <FRAMEWORK> オプションを使用してフレームワークを指定しない限り、dotnet run を実行するとエラーが発生します。

dotnet run コマンドは、ビルド済みのアセンブリではなく、プロジェクトのコンテキストで使用されます。 代わりにフレームワークに依存するアプリケーション DLL の実行を試みる場合は、コマンドなしで dotnet を実行する必要があります。 たとえば、myapp.dll を実行する場合は、次のコードを使用します。

dotnet myapp.dll

dotnet ドライバーの詳細については、.NET コマンド ライン ツール (CLI) に関する記事を参照してください。

アプリケーションを実行するため、dotnet run コマンドは、NuGet キャッシュから共有ランタイムの外にあるアプリケーションの依存関係を解決します。 このコマンドではキャッシュされた依存関係を使用するため、dotnet run を使用してアプリケーションを実稼働環境で実行することは推奨されません。 代わりに、dotnet publish コマンドを使用して展開を作成し、発行された出力を展開します。

暗黙的な復元

復元を必要とするすべてのコマンド (dotnet newdotnet builddotnet rundotnet testdotnet publishdotnet pack など) によって暗黙的に実行されるため、dotnet restore を実行する必要がなくなりました。 暗黙的な復元を無効にするには、--no-restore オプションを使用します。

dotnet restoreなどの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore は引き続き有用なコマンドです。

NuGet フィードの管理方法については、dotnet restore のドキュメントをご覧ください。

このコマンドには dotnet restore オプションを指定できますが、--source のように長い形式で指定する必要があります。 -s のような短い形式のオプションはサポートされていません。

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

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

オプション

  • --

    実行中のアプリケーションの引数と dotnet run の引数を区切ります。 この区切り記号の後の引数はすべて実行中のアプリケーションに渡されます。

  • -a|--arch <ARCHITECTURE>

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

  • -c|--configuration <CONFIGURATION>

    ビルド構成を定義します。 ほとんどのプロジェクトの既定値は Debug ですが、プロジェクトでビルド構成設定をオーバーライドできます。

  • -f|--framework <FRAMEWORK>

    指定されたフレームワークを使用してアプリをビルドし、実行します。 フレームワークはプロジェクト ファイルに指定する必要があります。

  • --force

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

  • -?|-h|--help

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

  • --interactive

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

  • --launch-profile <NAME>

    アプリケーションを起動する場合に使用する起動プロファイル (存在する場合) の名前です。 起動プロファイルは launchSettings.json ファイル内に定義されており、通常は、DevelopmentStagingProduction と呼ばれています。 詳細については、「Working with multiple environments」 (複数の環境での使用) をご覧ください。

  • --no-build

    実行前にプロジェクトをビルドしません。 また、--no-restore フラグが暗黙的に設定されます。

  • --no-dependencies

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

  • --no-launch-profile

    アプリケーションを構成するための launchSettings.json の使用を試みません。

  • --no-restore

    コマンドを実行するときに、暗黙的な復元を実行しません。

  • --os <OS>

    ターゲット オペレーティング システム (OS) を指定します。 これは、ランタイム識別子 (RID) を設定する簡単な構文です。指定した値は、既定の RID と組み合わされます。 たとえば、win-x64 マシンで --os linux と指定すると、RID は linux-x64 に設定されます。 このオプションを使用する場合は、-r|--runtime オプションは使用しないでください。 .NET 6 以降で使用可能です。

  • --project <PATH>

    実行するプロジェクト ファイルのパスを指定します (フォルダー名または完全なパス)。 指定しない場合は、既定で現在のディレクトリに設定されます。

    .NET 6 SDK 以降では、--project-p 省略形が非推奨となりました。 非推奨の警告は生成されますが、.NET 6 RC1 SDK 以降の期間限定で -p--project に使用することができます。 オプションに指定された引数に = が含まれていない場合、コマンドは -p--project の短縮形として受け付けます。 そうではない場合、コマンドによって -p--property の短縮形と見なされます。 この --project-p を使用する柔軟な方法は、.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 カタログに関するページをご覧ください。

  • --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」を参照してください。

使用例

  • 現在のディレクトリのプロジェクトを実行します。

    dotnet run
    
  • 指定されたプロジェクトを実行します。

    dotnet run --project ./projects/proj1/proj1.csproj
    
  • プロジェクトを現在のディレクトリで実行し、リリース構成を指定します。

    dotnet run --property:Configuration=Release
    
  • 現在のディレクトリのプロジェクトを実行します (この例では、空の -- オプションが使用されているため、--help 引数がアプリケーションに渡されます)。

    dotnet run --configuration Release -- --help
    
  • 最小限の出力のみを表示して、現在のディレクトリでプロジェクトの依存関係とツールを復元し、プロジェクトを実行します。

    dotnet run --verbosity m