起動構成ファイルを確認する
- 11 分
Visual Studio Code では、launch.json ファイルを使用してデバッガーを構成することが既に確認されています。 単純な C# コンソール アプリケーションを作成する場合、コードを正常にデバッグするために必要なすべての情報を含む launch.json ファイルが Visual Studio Code によって生成される可能性があります。 ただし、起動構成を変更する必要がある場合があるため、起動構成の属性を理解することが重要です。
起動構成の属性
launch.json ファイルには、 configurations 一覧に 1 つ以上の起動構成が含まれています。 起動構成では、さまざまなデバッグ シナリオをサポートするために属性が使用されます。 起動構成ごとに、次の属性が必須です。
-
name: 起動構成に割り当てられたリーダーフレンドリ名。 -
type: 起動構成に使用するデバッガーの種類。 -
request: 起動構成の要求の種類。
このセクションでは、発生する可能性がある属性の一部を定義します。
名前
name属性は、起動構成の表示名を指定します。
nameに割り当てられた値が起動構成ドロップダウンに表示されます (RUN AND DEBUG ビューの上部にあるコントロール パネル)。
タイプ
type属性は、起動構成に使用するデバッガーの種類を指定します。
codeclrの値は、.NET 5 以降および .NET Core アプリケーション (C# アプリケーションを含む) のデバッガーの種類を指定します。
リクエスト
request属性は、起動構成の要求の種類を指定します。 現在、 launch 値と attach がサポートされています。
PreLaunchTask
preLaunchTask属性は、プログラムをデバッグする前に実行するタスクを指定します。 タスク自体は、launch.json ファイルと共に .vscode フォルダーにある tasks.json ファイルにあります。
buildの事前起動タスクを指定すると、アプリケーションを起動する前にdotnet buildコマンドが実行されます。
プログラム
program属性は、起動するアプリケーション dll または .NET Core ホスト実行可能ファイルのパスに設定されます。
通常、このプロパティは次の形式になります: ${workspaceFolder}/bin/Debug/<target-framework>/<project-name.dll>。
場所は:
-
<target-framework>は、デバッグ プロジェクトがビルドされているフレームワークです。 通常、この値はプロジェクト ファイル内で 'TargetFramework' プロパティとして見つかります。 -
<project-name.dll>は、デバッグされたプロジェクトのビルド出力 dll の名前です。 このプロパティは通常、プロジェクト ファイル名と同じですが、'.dll' 拡張子が付いています。
例: ${workspaceFolder}/bin/Debug/net7.0/Debug101.dll
注
.dll 拡張子は、このファイルがダイナミック リンク ライブラリ (dll) ファイルであることを示します。 プロジェクトの名前が Debug101 の場合、 Debug101.dll という名前のファイルは、ビルド タスクが Program.cs ファイルと Debug101.csproj ファイルを使用してプログラムをコンパイルするときに作成されます。 エクスプローラー ビューで Debug101.dll ファイルを見つけるには、[bin] フォルダーと [デバッグ] フォルダーを展開し、コード プロジェクトで使用されている .NET フレームワークを表すフォルダー ("net7.0" など) を開きます。 .NET Framework のバージョンは、.csproj ファイルで指定されています。
Cwd
cwd属性は、ターゲット プロセスの作業ディレクトリを指定します。
引数
args属性は、起動時にプログラムに渡される引数を指定します。 既定では引数はありません。
コンソール
console属性は、アプリケーションの起動時に使用されるコンソールの種類を指定します。 オプションは internalConsole、integratedTerminal、externalTerminal です。 既定の設定は internalConsoleです。 コンソールの種類は次のように定義されます。
-
internalConsole設定は、Visual Studio Code エディターの下にあるパネル領域の [デバッグ コンソール] パネルに対応します。 -
integratedTerminal設定は、Visual Studio Code エディターの下にある [パネル] 領域の [出力] パネルに対応します。 -
externalTerminal設定は、外部ターミナル ウィンドウに対応します。 Windows に付属するコマンド プロンプト アプリケーションは、ターミナル ウィンドウの例です。
Von Bedeutung
[デバッグ コンソール] パネルでは、コンソール入力はサポートされていません。 たとえば、アプリケーションに Console.ReadLine() ステートメントが含まれている場合、DEBUG CONSOLE は使用できません。 ユーザー入力を読み取る C# コンソール アプリケーションで作業している場合は、 console 設定を integratedTerminal または externalTerminal に設定する必要があります。 コンソールに書き込むが、コンソールから入力を読み取らないコンソール アプリケーションでは、3 つの console 設定のいずれかを使用できます。
エントリで停止
ターゲットのエントリ ポイントで停止する必要がある場合は、必要に応じて stopAtEntry を trueに設定できます。
起動構成を編集する
起動構成ファイルをカスタマイズする必要がある場合は、多くのシナリオがあります。 これらのシナリオの多くは、高度または複雑なプロジェクト シナリオを含みます。 このモジュールでは、起動構成ファイルを更新する必要がある 2 つの簡単なシナリオに焦点を当てます。
- C# コンソール アプリケーションは、コンソールから入力を読み取ります。
- プロジェクト ワークスペースには、複数のアプリケーションが含まれています。
コンソール入力に対応するように起動構成を更新する
前に説明したように、DEBUG CONSOLE パネルではコンソール入力はサポートされていません。 ユーザー入力に依存するコンソール アプリケーションをデバッグする場合は、関連付けられている起動構成の console 属性を更新する必要があります。
console属性を編集するには:
Visual Studio Code エディターで launch.json ファイルを開きます。
コンソール属性を見つけます。
コロンと割り当てられた値を選択し、コロン文字を入力します。
既存の情報をコロンで上書きすると、Visual Studio Code IntelliSense によってドロップダウン リストに 3 つのオプションが表示されることに注意してください。
integratedTerminal または externalTerminal を選択します。
launch.json ファイルを保存します。
複数のアプリケーションに対応するように起動構成を更新する
ワークスペースに起動可能なプロジェクトが 1 つしかない場合、C# 拡張機能によって launch.json ファイルが自動的に生成されます。 複数の起動可能なプロジェクトがある場合は、launch.json ファイルを手動で変更する必要があります。 Visual Studio Code では、更新可能な基本テンプレートを使用して launch.json ファイルが生成されます。 このシナリオでは、デバッグするアプリケーションごとに個別の構成を作成します。 ビルド タスクなどの事前起動タスクは、tasks.json ファイルに作成できます。
複数のコンソール アプリケーションを含むコーディング プロジェクトに取り組んでいるとします。 ルート プロジェクト フォルダー SpecialProjects は、コードを操作するときに Visual Studio Code で開くワークスペース フォルダーです。 Project123 と Project456 の 2 つのアプリケーションを開発しています。 RUN AND DEBUG ビューを使用して、アプリケーションをデバッグします。 デバッグするアプリケーションをユーザー インターフェイスから選択します。 また、デバッガーをアプリケーションにアタッチする前に、保存されたコード更新プログラムをコンパイルする必要もあります。
launch.json ファイルと tasks.json ファイルを更新することで、このシナリオの要件を満たすことができます。
次のスクリーンショットは、エクスプローラー ビューと、Project123 と Project456 を含むフォルダー構造を示しています。
launch.json ファイルと tasks.json ファイルを含む .vscode フォルダーは、個々のプロジェクト フォルダーではなく、 ワークスペース フォルダー SpecialProjects に関連付けられていることに注意してください。
次の例では、"Project123" アプリケーションと "Project456" アプリケーションの両方の構成を含むように launch.json ファイルを構成する方法を示します。
"version": "0.2.0",
"configurations": [
{
"name": "Launch Project123",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "buildProject123",
"program": "${workspaceFolder}/Project123/bin/Debug/net7.0/Project123.dll",
"args": [],
"cwd": "${workspaceFolder}/Project123",
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Launch Project456",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "buildProject456",
"program": "${workspaceFolder}/Project456/bin/Debug/net7.0/Project456.dll",
"args": [],
"cwd": "${workspaceFolder}/Project456",
"console": "internalConsole",
"stopAtEntry": false
}
]
名前、preLaunchTask、およびプログラム フィールドがすべて特定のアプリケーション用に構成されていることに注意してください。
name 属性は、RUN AND DEBUG ビューのユーザー インターフェイスに表示される選択可能な起動オプションを指定し、プログラム属性はアプリケーションへのパスを指定します。 preLaunchTask 属性は、デバッガーを起動する前に実行されるタスクの名前を指定するために使用されます。 tasks.json ファイルには、名前付きタスクと、タスクを完了するために必要な情報が含まれています。
次の例は、tasks.json ファイルを構成する方法を示しています。 この場合、名前付きタスクは、"Project123" および "Project456" アプリケーションに固有のビルド操作を指定します。 ビルド タスクでは、保存された編集がコンパイルされ、デバッガーにアタッチされている対応する .dll ファイルで表されます。
"version": "2.0.0",
"tasks": [
{
"label": "buildProject123",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Project123/Project123.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "buildProject456",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Project456/Project456.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
}
]
launch.json ファイルと tasks.json ファイルの更新プログラムが配置された状態で、[実行とデバッグ] ビューには、Project123 または Project456 アプリケーションをデバッグするための起動オプションが表示されます。 次のスクリーンショットは、起動構成ドロップダウンに表示される起動構成の名前を示しています。
まとめ
このユニットで覚えておく必要がある 2 つの重要な点を次に示します。
- 起動構成は、
name、type、request、preLaunchTask、program、consoleなどの属性を指定するために使用されます。 - 開発者は、プロジェクトの要件に合わせて起動構成を編集できます。