🚀 VS Code で で入手しましょう!

C# デバッグの構成

Visual Studio Code で C# デバッガーを構成するには、launch.jsonlaunchSettings.json、またはユーザーの settings.json ファイルを使用します。

以下は、デバッグ中に変更する可能性のある一般的なオプションです。

VS Code のデバッグ動作の構成

PreLaunchTask

preLaunchTask フィールドは、プログラムをデバッグする前に、tasks.json で関連付けられた taskName を実行します。VS Code コマンドパレットからタスク: タスクランナーの構成コマンドを実行すると、デフォルトのビルドプリランチタスクを取得できます。

これにより、dotnet build を実行するタスクが作成されます。詳細については、VS Code のタスクドキュメントを参照してください。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json

Program

program フィールドは、起動するアプリケーション DLL または .NET Core ホスト実行可能ファイルへのパスに設定されます。

通常、このプロパティは「"${workspaceFolder}/bin/Debug/<target-framework>/<project-name.dll>"」の形式を取ります。

例: "${workspaceFolder}/bin/Debug/netcoreapp1.1/MyProject.dll"

説明:

  • <target-framework> は、デバッグ対象のプロジェクトがビルドされているフレームワークです。これは通常、プロジェクトファイル内で 'TargetFramework' プロパティとして見つかります。
  • <project-name.dll> は、デバッグ対象のプロジェクトのビルド出力 DLL の名前です。これは通常、プロジェクトファイル名と同じですが、'.dll' 拡張子が付いています。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json ✔️ (executablePath として)

Cwd

ターゲットプロセスの作業ディレクトリ。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json ✔️ (workingDirectory として)

Args

これらは、プログラムに渡される引数です。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json ✔️ (commandLineArgs として)

Stop at Entry

ターゲットのエントリポイントで停止する必要がある場合は、オプションで stopAtEntry を "true" に設定できます。

可用性

  • launch.json ✔️
  • settings.json ✔️ (csharp.debug.stopAtEntry として)
  • launchSettings.json

Web ブラウザーの起動

ASP.NET Core プロジェクトのデフォルトの launch.json テンプレート (C# 拡張機能 v1.20.0 時点) では、ASP.NET の起動時に Web ブラウザーを起動するように VS Code を構成するために、以下を使用します。

    "serverReadyAction": {
        "action": "openExternally",
        "pattern": "\\bNow listening on:\\s+(https?://\\S+)"
    }

これに関する注意事項

  1. ブラウザーを自動的に起動したくない場合は、この要素 (および launchBrowser 要素が launch.json にある場合はそれ) を削除するだけで済みます。

  2. このパターンは、ASP.NET Core がコンソールに書き込む URL を使用して Web ブラウザーを起動します。URL を変更する場合は、ブラウザーの URL の指定を参照してください。これは、ターゲットアプリケーションが別のマシンまたはコンテナーで実行されている場合、または applicationUrl に特別なホスト名がある場合 (例: "applicationUrl": "http://*:1234/") に役立つ場合があります。

  3. serverReadyAction は、VS Code の新機能です。これは、C# 拡張機能のデバッガーに組み込まれている以前の launchBrowser 機能よりも推奨されます。これは、C# 拡張機能がリモートマシンで実行されている場合でも機能し、VS Code 用に構成されたデフォルトのブラウザーを使用し、スクリプトデバッガーの使用も許可するためです。これらの機能のいずれも重要でない場合は、代わりに launchBrowser を引き続き使用できます。デフォルトのブラウザーを起動する代わりに特定のプログラムを実行したい場合も、launchBrowser を引き続き使用できます。

  4. serverReadyAction の詳細については、Visual Studio Code 2019 年 2 月のリリースノートを参照してください。

  5. この仕組みは、VS Code がコンソールに設定された出力をスクレイピングすることです。行がパターンに一致する場合、パターンによって「キャプチャ」された URL に対してブラウザーを起動します。

    パターンが何をするかの説明を次に示します。

    • \\b : 単語境界に一致します。\b は単語境界を示しますが、これは JSON 文字列であるため、\ をエスケープする必要があるため、\\b となります。
    • Now listening on: : これは文字列リテラルであり、次のテキストは Now listening on: である必要があります。
    • \\s+ : 1 つ以上のスペース文字に一致します。
    • ( : これは「キャプチャグループ」の始まりです。これは、保存してブラウザーを起動するために使用されるテキストの領域を示します。
    • http : 文字列リテラル。
    • s? : 文字 s または何もなし。
    • :// : 文字列リテラル。
    • \\S+ : 1 つ以上の非空白文字。
    • ) : キャプチャグループの終わり。
  6. どちらの形式のブラウザー起動でも、"console": "internalConsole" が必要です。ブラウザーランチャーは、Web サーバーが自身を初期化したタイミングを知るために、ターゲットプロセスの標準出力をスクレイピングするためです。

ブラウザーの URL の指定

コンソール出力からの URL を無視する場合は、パターンから () を削除し、uriFormat を起動したいものに設定できます。

    "serverReadyAction": {
        "action": "openExternally",
        "pattern": "\\bNow listening on:\\s+https?://\\S",
        "uriFormat": "http://localhost:1234"
    }

コンソール出力からポート番号を使用したいが、ホスト名を使用しない場合は、次のようなものも使用できます。

    "serverReadyAction": {
        "action": "openExternally",
        "pattern": "\\bNow listening on:\\s+http://\\S+:([0-9]+)",
        "uriFormat": "http://localhost:%s"
    }

実際には、ほぼすべての URL を開くことができます。たとえば、次のようにしてデフォルトの Swagger UI を開くことができます。

    "serverReadyAction": {
        "action": "openExternally",
        "pattern": "\\bNow listening on:\\s+http://\\S+:([0-9]+)",
        "uriFormat": "http://localhost:%s/swagger/index.html"
    }

これを行うには、プロジェクトに Swagger UI のセットアップがあることを確認する必要があります。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json ✔️ (launchBrowser および applicationUrl を使用)

環境変数

環境変数は、次のスキーマを使用してプログラムに渡すことができます。

    "env": {
        "myVariableName":"theValueGoesHere"
    }

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json ✔️ (environmentVariables として)

コンソール (ターミナル) ウィンドウ

"console" 設定は、ターゲットアプリが起動されるコンソール (ターミナル) ウィンドウを制御します。これは、次のいずれかの値に設定できます --

  • "internalConsole" (デフォルト): ターゲットプロセスのコンソール入力 (stdin) と出力 (stdout/stderr) は、VS Code デバッグコンソールを介してルーティングされます。このモードの利点は、デバッガーとターゲットプログラムの両方からのメッセージを 1 か所で確認できるため、重要なメッセージを見逃したり、切り替えたりする必要がないことです。これは、単純なコンソールインタラクション (例: Console.WriteLineConsole.ReadLine の使用) を持つプログラムに役立ちます。ターゲットプログラムがカーソル位置を変更したり、入力に Console.ReadKey を使用したりするなど、コンソールを完全に制御する必要がある場合は、これを使用しないでください。コンソールへの入力方法については、下記を参照してください。
  • "integratedTerminal" : ターゲットプロセスは、VS Code の統合ターミナル内で実行されます。エディターの下のタブグループでターミナルタブを選択して、アプリケーションを操作します。このモードを使用する場合、デフォルトでは、デバッグの開始時にデバッグコンソールは表示されません。launch.json を使用している場合は、internalConsoleOptions で構成できます。
  • "externalTerminal": ターゲットプロセスは、独自の外部ターミナル内で実行されます。このモードを使用する場合、Visual Studio Code と外部ターミナルウィンドウの間でフォーカスを切り替える必要があります。

可用性

  • launch.json ✔️
  • settings.json ✔️ (csharp.debug.console として)
  • launchSettings.json

: csharp.debug.console 設定は、dotnet デバッグ構成タイプで起動されたコンソールプロジェクトでのみ使用されます。

internalConsole を使用する場合のターゲットプロセスへのテキストの入力

internalConsole を使用する場合、Visual Studio Code にテキストを入力して、Console.ReadLinestdin から読み取る同様の API から返されるようにすることができます。これを行うには、プログラムの実行中に、デバッグコンソールの下部にある入力ボックスにテキストを入力します。Enter キーを押すと、テキストがターゲットプロセスに送信されます。プログラムがデバッガーで停止している間にこのボックスにテキストを入力すると、このテキストはターゲットプロセスに送信されるのではなく、C# 式として評価されることに注意してください。

Example of inputting text to the Console to be set to the target process's standard input

launchSettings.json のサポート

launch.json に加えて、起動オプションは launchSettings.json ファイルを介して構成できます。launchSettings.json の利点は、設定を Visual Studio Code、フル Visual Studio、および dotnet run 間で共有できることです。

使用する launchSettings.json プロファイルを構成する (または使用されないようにする) には、launchSettingsProfile オプションを設定します。

    "launchSettingsProfile": "ProfileNameGoesHere"

たとえば、次の例の launchSettings.json ファイルから myVariableName を使用します。

{
  "profiles": {
    "ProfileNameGoesHere": {
      "commandName": "Project",
      "environmentVariables": {
        "myVariableName": "theValueGoesHere"
      }
    }
  }
}

launchSettingsProfile が指定されていない場合、"commandName": "Project" を持つ最初のプロファイルが使用されます。

launchSettingsProfile が null/空の文字列に設定されている場合、Properties/launchSettings.json は無視されます。

デフォルトでは、デバッガーは {cwd}/Properties/launchSettings.json で launchSettings.json を検索します。このパスをカスタマイズするには、launchSettingsFilePath を設定します。

   "launchSettingsFilePath": "${workspaceFolder}/<Relative-Path-To-Project-Directory/Properties/launchSettings.json"

制限事項

  1. "commandName": "Project" を持つプロファイルのみがサポートされています。
  2. environmentVariablesapplicationUrl、および commandLineArgs プロパティのみがサポートされています。
  3. launch.json の設定は launchSettings.json の設定よりも優先されるため、たとえば、argslaunch.json で空の文字列/配列以外に既に設定されている場合、launchSettings.json の内容は無視されます。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json

ソースファイルマップ

オプションで、次の形式を使用してマップを提供することにより、ソースファイルの開き方を構成できます。

    "sourceFileMap": {
        "C:\\foo":"/home/me/foo"
    }

この例では

  • C:\foo は、モジュール (例: MyCode.dll) がコンパイルされたときの 1 つ以上のソースファイル (例: program.cs) の元の場所です。ソースファイルがその下にあるディレクトリ、またはソースファイルへの完全パス (例: c:\foo\program.cs) のいずれかになります。Visual Studio Code を実行しているコンピューター上、またはリモートデバッグを行っている場合はリモートマシン上に存在する必要はありません。デバッガーは .pdb (シンボル) ファイルからソースファイルへのパスを読み取り、このマップを使用してパスを変換します。
  • /home/me/foo は、ソースファイルが Visual Studio Code で見つかるようになったパスです。

可用性

  • launch.json ✔️
  • settings.json ✔️ (csharp.debug.sourceFileMap として)
  • launchSettings.json

Just My Code

オプションで、justMyCode を "false" に設定して無効にすることができます。シンボルがない、または最適化されているライブラリをデバッグしようとしている場合は、Just My Code を無効にする必要があります。

    "justMyCode":false

Just My Code は、.NET Framework 自体など、使用している可能性のある最適化されたライブラリの詳細の一部を非表示にすることで、自分のコードのデバッグに集中しやすくする機能のセットです。この機能の最も重要なサブパーツは次のとおりです --

  • ユーザーが処理しない例外: フレームワークによって例外がキャッチされる直前にデバッガーを自動的に停止します。
  • Just My Code ステップ実行: ステップ実行時に、フレームワークコードがユーザーコードをコールバックする場合、自動的に停止します。

可用性

  • launch.json ✔️
  • settings.json ✔️ (csharp.debug.justMyCode として)
  • launchSettings.json

厳密なソースを要求する

デバッガーは、PDB とソースコードが完全に同じであることを要求します。これを変更して、ソースが同じであることを無効にするには、次を追加します。

    "requireExactSource": false

可用性

  • launch.json ✔️
  • settings.json ✔️ (csharp.debug.requireExactSource として)
  • launchSettings.json

プロパティと演算子へのステップイン

デバッガーは、デフォルトでマネージコードのプロパティと演算子をステップオーバーします。ほとんどの場合、これにより、より優れたデバッグエクスペリエンスが提供されます。これを変更して、プロパティまたは演算子へのステップインを有効にするには、次を追加します。

    "enableStepFiltering": false

可用性

  • launch.json ✔️
  • settings.json ✔️ (csharp.debug.enableStepFiltering として)
  • launchSettings.json

ログ

オプションで、出力ウィンドウに記録されるメッセージを有効または無効にできます。logging フィールドのフラグは、'exceptions'、'moduleLoad'、'programOutput'、'browserStdOut'、および 'consoleUsageMessage' です。

'logging.diagnosticsLog' の下には、デバッガーの問題を診断するための高度なオプションもあります。

可用性

  • launch.json ✔️
  • settings.json ✔️ (csharp.debug.logging の下)
  • launchSettings.json

PipeTransport

VS Code と .NET Core デバッガーバックエンド (vsdbg) の間で標準入力と出力をリレーするために別の実行可能ファイルを使用してデバッガーをリモートコンピューターに接続する必要がある場合は、次のスキーマに従って pipeTransport フィールドを追加します。

    "pipeTransport": {
        "pipeProgram": "ssh",
        "pipeArgs": [ "-T", "ExampleAccount@ExampleTargetComputer" ],
        "debuggerPath": "~/vsdbg/vsdbg",
        "pipeCwd": "${workspaceFolder}",
        "quoteArgs": true
    }

パイプトランスポートの詳細については、こちらを参照してください。

Windows Subsystem for Linux (WSL) のパイプトランスポートの構成に関する情報は、こちらを参照してください。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json

オペレーティングシステム固有の構成

オペレーティングシステムごとに変更する必要がある特定のコマンドがある場合は、'windows'、'osx'、または 'linux' フィールドを使用できます。上記のフィールドのいずれかを、特定のオペレーティングシステムに置き換えることができます。

JIT 最適化の抑制

.NET デバッガーは、次のオプションをサポートしています。true の場合、最適化されたモジュール (リリース構成でコンパイルされた .dll) がターゲットプロセスにロードされると、デバッガーは Just-In-Time コンパイラーに最適化が無効になっているコードを生成するように要求します。オプションのデフォルト値は false です。

    "suppressJITOptimizations": true

.NET での最適化の仕組み: コードをデバッグしようとしている場合、コードが最適化されていない方が簡単です。これは、コードが最適化されると、コンパイラーとランタイムが、より高速に実行されるように、ただし元のソースコードへの直接的なマッピングが少なくなるように、出力される CPU コードに変更を加えるためです。これは、デバッガーがローカル変数の値を伝えることが頻繁にできず、コードステップ実行とブレークポイントが期待どおりに機能しない可能性があることを意味します。

通常、リリースビルド構成は最適化されたコードを作成し、デバッグビルド構成は作成しません。Optimize MSBuild プロパティは、コンパイラーにコードを最適化するように指示するかどうかを制御します。

.NET エコシステムでは、コードはソースから CPU 命令に 2 段階のプロセスで変換されます。最初に、C# コンパイラーは、入力したテキストを MSIL と呼ばれる中間バイナリ形式に変換し、これを .dll ファイルに出力します。その後、.NET ランタイムはこの MSIL を CPU 命令に変換します。どちらのステップもある程度最適化できますが、.NET ランタイムによって実行される 2 番目のステップの方が、より重要な最適化を実行します。

オプションの機能: このオプションは、最適化が有効になっている状態でコンパイルされた DLL がターゲットプロセス内にロードされたときに何が起こるかを制御します。このオプションが false (デフォルト値) の場合、.NET ランタイムが MSIL コードを CPU コードにコンパイルするときに、最適化を有効のままにします。オプションが true の場合、デバッガーは最適化を無効にするように要求します。

このオプションを使用する必要がある場合: このオプションは、nuget パッケージなど、別のソースから DLL をダウンロードし、この DLL 内のコードをデバッグする場合に使用する必要があります。これを機能させるには、この DLL のシンボル (.pdb) ファイルも見つける必要があります。

ローカルでビルドしているコードのデバッグのみに関心がある場合は、このオプションを false のままにしておくのが最適です。場合によっては、このオプションを有効にすると、デバッグが大幅に遅くなるためです。これによる速度低下には、2 つの理由があります --

  • 最適化されたコードは高速に実行されます。多数のコードの最適化をオフにすると、時間がかかる可能性があります。
  • Just My Code が有効になっている場合、デバッガーは最適化された DLL のシンボルのロードを試行さえしません。シンボルを見つけるには時間がかかる場合があります。

このオプションの制限事項: このオプションが機能しない状況が 2 つあります。

1: 既に実行中のプロセスにデバッガーをアタッチする状況では、このオプションは、デバッガーがアタッチされた時点で既にロードされていたモジュールには影響しません。

2: このオプションは、ネイティブコードにプリコンパイル (ngen'ed) された DLL には影響しません。ただし、環境変数 COMPlus_ReadyToRun0 に設定してプロセスを開始することにより、プリコンパイルされたコードの使用を無効にできます。古いバージョンの .NET Core (2.x) をターゲットにしている場合は、COMPlus_ZapDisable を '1' にも設定します。デバッガーで起動している場合、この構成は launch.json に次の設定を追加することで設定できます。

    "env": {
        "COMPlus_ZapDisable": "1",
        "COMPlus_ReadyToRun": "0"
    }

可用性

  • launch.json ✔️
  • settings.json ✔️ (csharp.debug.suppressJITOptimizations として)
  • launchSettings.json

シンボルオプション

symbolOptions 要素を使用すると、デバッガーがシンボルを検索する方法をカスタマイズできます。例

    "symbolOptions": {
        "searchPaths": [
            "~/src/MyOtherProject/bin/debug",
            "https://my-companies-symbols-server"
        ],
        "searchMicrosoftSymbolServer": true,
        "searchNuGetOrgSymbolServer": true,
        "cachePath": "/symcache",
        "moduleFilter": {
            "mode": "loadAllButExcluded",
            "excludedModules": [ "DoNotLookForThisOne*.dll" ]
        }
    }

プロパティ

searchPaths: .pdb ファイルを検索するシンボルサーバー URL (例: https://msdl.microsoft.com/download/symbols) またはディレクトリ (例: /build/symbols) の配列。これらのディレクトリは、モジュールの隣と .pdb が元々ドロップされた場所であるデフォルトの場所に加えて検索されます。

searchMicrosoftSymbolServer: true の場合、Microsoft シンボルサーバー (https://msdl.microsoft.com/download/symbols) がシンボル検索パスに追加されます。指定しない場合、このオプションのデフォルト値は false です。

searchNuGetOrgSymbolServer: true の場合、Nuget.org シンボルサーバー (https://symbols.nuget.org/download/symbols) がシンボル検索パスに追加されます。指定しない場合、このオプションのデフォルト値は false です。

cachePath": シンボルサーバーからダウンロードされたシンボルをキャッシュするディレクトリ。指定しない場合、Windows ではデバッガーはデフォルトで %TEMP%\\SymbolCache になり、Linux および macOS ではデバッガーはデフォルトで ~/.dotnet/symbolcache になります。

moduleFilter.mode: この値は、"loadAllButExcluded" または "loadOnlyIncluded" のいずれかです。"loadAllButExcluded" モードでは、モジュールが 'excludedModules' 配列に含まれていない限り、デバッガーはすべてのモジュールのシンボルをロードします。"loadOnlyIncluded" モードでは、モジュールが 'includedModules' 配列に含まれているか、'includeSymbolsNextToModules' 設定によって含まれていない限り、デバッガーはどのモジュールのシンボルもロードしようとしません。

loadAllButExcluded モードのプロパティ

moduleFilter.excludedModules: デバッガーがシンボルをロードしないモジュールの配列。ワイルドカード (例: MyCompany.*.dll) がサポートされています。

loadOnlyIncluded モードのプロパティ

moduleFilter.includedModules: デバッガーがシンボルをロードするモジュールの配列。ワイルドカード (例: MyCompany.*.dll) がサポートされています。

moduleFilter.includeSymbolsNextToModules: true の場合、'includedModules' 配列に含まれていないモジュールの場合でも、デバッガーはモジュール自体と起動実行可能ファイルの隣をチェックしますが、シンボル検索リストのパスはチェックしません。このオプションのデフォルト値は 'true' です。

可用性

  • launch.json ✔️
  • settings.json ✔️ (csharp.debug.symbolOptions の下)
  • launchSettings.json

Source Link は、nuget パッケージから取得したコードなど、別のコンピューターでビルドされたコードをデバッグしている場合に、デバッガーが Web からダウンロードすることにより、一致するソースコードを自動的に表示できるようにする機能です。これを機能させるには、デバッグしているコードの .pdb ファイルに、DLL 内のソースファイルをデバッガーがダウンロードできる URL にマッピングするデータが含まれています。Source Link の詳細については、https://aka.ms/SourceLinkSpec を参照してください。

launch.jsonsourceLinkOptions 要素を使用すると、URL ごとに Source Link の動作をカスタマイズできます。これは、URL からその URL の Source Link オプションへのマップです。URL 名ではワイルドカードがサポートされています。現在、カスタマイズは Source Link がその URL に対して有効になっているかどうかのみですが、将来さらにオプションが追加される可能性があります。

    "sourceLinkOptions": {
        "https://raw.githubusercontent.com/*": { "enabled": true },
        "*": { "enabled": false }
    }

この例では、GitHub URL に対して Source Link を有効にし、他のすべての URL に対して Source Link を無効にします。

このオプションのデフォルト値は、すべての URL に対して Source Link を有効にすることです。同様に、Source Link は sourceLinkOptions マップにルールがない URL に対して有効になります。

すべての URL に対して Source Link を無効にするには、"sourceLinkOptions": { "*": { "enabled": false } } を使用します。

複数のエントリが同じ URL をカバーする場合、より具体的なエントリ (文字列長の長いエントリ) が使用されます。

現在、Source Link は認証なしでアクセスできるソースファイルでのみ機能します。したがって、たとえば、デバッガーは GitHub 上のオープンソースプロジェクトからソースファイルをダウンロードできますが、プライベート GitHub リポジトリや Visual Studio Team Services からはダウンロードできません。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json

ターゲットアーキテクチャオプション (macOS M1)

Apple M1 上の .NET は、x86_64 と ARM64 の両方をサポートしています。デバッグ時、デバッガーがアタッチしているプロセスのアーキテクチャとデバッガーは一致する必要があります。一致しない場合、Unknown Error: 0x80131c3c が発生する可能性があります。

拡張機能は、PATH の dotnet --info の出力に基づいて targetArchitecture を解決しようとします。それ以外の場合は、VS Code と同じアーキテクチャを使用しようとします。

launch.jsontargetArchitecture を設定することにより、この動作をオーバーライドできます。

    "targetArchitecture": "arm64"

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json

DevCert の確認

このオプションは、起動時に、コンピューターに https エンドポイントで実行されている Web プロジェクトの開発に使用される自己署名 HTTPS 証明書があるかどうかをデバッガーが確認する必要があるかどうかを制御します。このために、dotnet dev-certs https --check --trust を実行しようとします。証明書が見つからない場合は、ユーザーに証明書の作成を提案するプロンプトが表示されます。ユーザーが承認した場合、拡張機能は dotnet dev-certs https --trust を実行して、信頼された自己署名証明書を作成します。

指定しない場合、serverReadyAction が設定されている場合はデフォルトで true になります。このオプションは、Linux、VS Code リモート、および VS Code for the Web シナリオでは何も行いません。

launch.jsoncheckForDevCert を false に設定することにより、この動作をオーバーライドできます。

    "checkForDevCert": "false"

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json ✔️ (useSSL として)

launchSettings.json の構成

C# Dev Kit を使用すると、Visual Studio から launchSettings.json を持ち込んで Visual Studio Code で使用できます。

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:59481",
      "sslPort": 44308
    }
  },
  "profiles": {
    "EnvironmentsSample": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:7152;http://localhost:5105",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "EnvironmentsSample-Staging": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:7152;http://localhost:5105",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Staging",
        "ASPNETCORE_DETAILEDERRORS": "1",
        "ASPNETCORE_SHUTDOWNTIMEOUTSECONDS": "3"
      }
    },
    "EnvironmentsSample-Production": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:7152;http://localhost:5105",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Production"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

プロファイルプロパティ

  • commandLineArgs - 実行されるターゲットに渡す引数。
  • executablePath - 実行可能ファイルへの絶対パスまたは相対パス。
  • workingDirectory - コマンドの作業ディレクトリを設定します。
  • launchBrowser - ブラウザーを起動する場合は true に設定します。
  • applicationUrl - Web サーバー用に構成する URL のセミコロン区切りリスト。
  • sslPort - Web サイトに使用する SSL ポート。
  • httpPort - Web サイトに使用する HTTP ポート。

参考資料