檢查啟動設定檔
- 11 分鐘
您已經看到 Visual Studio Code 會使用 launch.json 檔案來設定偵錯工具。 如果您要建立簡單的 C# 主控台應用程式,Visual Studio Code 可能會產生 launch.json 檔案,檔案中包含要成功偵錯程式碼所需的一切資訊。 不過,在某些情況下,您需要修改啟動設定,因此請務必了解啟動設定的屬性。
啟動設定的屬性
launch.json 檔案包含 configurations 清單中的一或多個啟動設定。 啟動設定會使用屬性來支援不同的偵錯案例。 每個啟動設定都需要下列屬性:
-
name:為啟動組態指定的易記名稱。 -
type:啟動組態所使用的偵錯工具類型。 -
request:啟動組態的要求類型。
本節會定義您可能遇到的某些屬性。
名稱
name 屬性會指定啟動設定的顯示名稱。 指派給 name 的值會出現在 [啟動設定] 下拉式清單中 (位於 [執行和偵錯] 檢視頂端的控制台上)。
類型
type 屬性會指定要用於啟動設定的偵錯工具類型。 值 的 codeclr 值指定 .NET 5+ 應用程式(包括 C# 應用程式)的除錯器類型。
請求
request 屬性會指定啟動設定的要求類型。 目前支援的值有 launch 和 attach。
PreLaunchTask
preLaunchTask 屬性會指定要在偵錯程式之前執行的工作。 工作本身可以在 tasks.json 檔案 (位於 .vscode 資料夾) 以及 launch.json 檔案中找到。 指定 build 的預先啟動工作會在啟動應用程式前先執行 dotnet build 命令。
程式
屬性 program 設定為應用程式 dll 或 .NET 主機執行檔啟動的路徑。
此屬性一般採用以下格式:${workspaceFolder}/bin/Debug/<target-framework>/<project-name.dll>。
地點:
-
<target-framework>是偵錯專案的建置目標框架。 這個值一般可在專案檔的「TargetFramework」屬性中找到。 -
<project-name.dll>是偵錯專案建置輸出 dll 的名稱。 此屬性一般會與專案檔的名稱相同,但副檔名為「.dll」。
例如:${workspaceFolder}/bin/Debug/net10.0/Debug101.dll
備註
.dll 副檔名表示此檔案是動態連結程式庫 (dll) 檔案。 如果您的專案名為 Debug101,則在建置工作使用 Program.cs 和 Debug101.csproj 檔案編譯您的程式時,系統會建立名為 Debug101.dll 的檔案。 你可以在檔案總管檢視中展開「bin」和「Debug」資料夾,然後打開代表你程式碼專案所用 .NET 框架的資料夾,例如「net10.0」來找到 Debug101.dll 檔案。 .NET Framework 版本指定於 .csproj 檔案中。
Cwd
cwd 屬性會指定目標程序的工作目錄。
Args
args 屬性會指定在啟動時傳遞至程式的引數。 預設沒有任何引數。
主控台
console 屬性會指定啟動應用程式時所使用的主控台類型。 選項有 internalConsole、integratedTerminal 和 externalTerminal。 預設設定是 internalConsole。 主控台類型會定義為:
-
internalConsole設定對應至 Visual Studio Code 編輯器下 [面板] 區域中的 [偵錯主控台] 面板。 -
integratedTerminal設定對應至 Visual Studio Code 編輯器下 [面板] 區域中的 [輸出] 面板。 -
externalTerminal設定對應至外部終端機視窗。 Windows 隨附的命令提示字元應用程式便是終端機視窗的範例。
這很重要
[偵錯主控台] 面板不支援主控台輸入。 例如,如果應用程式包含 Console.ReadLine() 陳述式,就無法使用偵錯主控台。 當您在處理會讀取使用者輸入的 C# 主控台應用程式時,console 設定必須設為 integratedTerminal 或 externalTerminal。 會寫入主控台但不會從主控台讀取輸入的主控台應用程式,可以使用三個 console 設定中的任何一個。
停止進入
如果您需要在目標的進入點停下,則可以選擇性地將 stopAtEntry 設定為 true。
編輯啟動設定
在許多案例中,您可能需要自訂啟動設定檔。 在這些案例中,有許多牽涉到進階或複雜的專案案例。 本課程模組聚焦在需要更新啟動設定檔時的兩個簡單案例:
- 您的 C# 主控台應用程式從主控台讀取輸入。
- 您的專案工作區包含多個應用程式。
更新啟動設定以因應主控台輸入
如前面看到的,[偵錯主控台] 面板不支援主控台輸入。 如果您要偵錯依賴使用者輸入的主控台應用程式,則必須更新相關聯啟動設定中的 console 屬性。
若要編輯 console 屬性:
在 Visual Studio Code 編輯器中開啟 launch.json 檔案。
找到主控台屬性。
選取冒號和指派的值,然後輸入冒號字元。
請注意,當您以冒號覆寫現有資訊時,Visual Studio Code IntelliSense 會在下拉式清單中顯示三個選項。
選取 integratedTerminal 或 externalTerminal。
儲存 launch.json 檔案。
更新啟動設定以因應多個應用程式
如果您的工作區只有一個可啟動的專案,C# 延伸模組會自動產生 launch.json 檔案。 如果您有多個可啟動的專案,則必須手動修改 launch.json 檔案。 Visual Studio Code 會使用您可以更新的基本範本來產生 launch.json 檔案。 在本案例中,您會為每個想要偵錯的應用程式建立個別的設定。 您可以在 tasks.json 檔案中建立預先啟動工作,例如建置工作。
假設您正在處理包含數個主控台應用程式的編碼專案。 根專案資料夾 SpecialProjects 是您在處理程式碼時於 Visual Studio Code 中開啟的工作區資料夾。 您有兩個正在開發的應用程式:Project123 和 Project456。 您使用 [執行和偵錯] 檢視來偵錯應用程式。 您想要從使用者介面選取您要偵錯的應用程式。 您也想要在將偵錯工具連結至應用程式之前,先編譯任何已儲存的程式碼更新。
您可以藉由更新 launch.json 和 tasks.json 檔案來達到本案例的需求。
下列螢幕擷取畫面顯示 [總管] 檢視和包含 Project123 與 Project456 的資料夾結構。
請注意,包含 launch.json 和 tasks.json 檔案的 .vscode 資料夾會與工作區資料夾 SpecialProjects 相關聯,而不會與個別的專案資料夾相關聯。
下列範例顯示如何設定 launch.json 檔案,以包含「Project123」和「Project456」應用程式的組態。
"version": "0.2.0",
"configurations": [
{
"name": "Launch Project123",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "buildProject123",
"program": "${workspaceFolder}/Project123/bin/Debug/net10.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/net10.0/Project456.dll",
"args": [],
"cwd": "${workspaceFolder}/Project456",
"console": "internalConsole",
"stopAtEntry": false
}
]
請注意,[名稱]、[preLaunchTask] 和 [程式] 欄位都已針對特定應用程式進行設定。
名稱屬性會指定 [執行和偵錯] 檢視使用者介面中顯示的可選取啟動選項,程式屬性會指定應用程式的路徑。 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 應用程式的啟動選項。 下列螢幕擷取畫面顯示 [啟動設定] 下拉式清單中所顯示啟動設定的名稱:
回顧
以下為本單元中需記住的兩個重點:
- 啟動設定可用來指定各種屬性,例如
name、type、request、preLaunchTask、program和console。 - 開發人員可以編輯啟動設定以因應專案需求。
檢定您的知識
意見反應
此頁面對您有幫助嗎?
No
需要本主題的協助嗎?
想要嘗試使用 Ask Learn 來釐清或引導您完成本主題嗎?