ตรวจสอบแฟ้มการกําหนดค่าการเปิดใช้
- 11 นาที
คุณได้เห็นแล้วว่า Visual Studio Code ใช้ไฟล์ launch.json เพื่อกําหนดค่าตัวดีบัก หากคุณกําลังสร้างแอปพลิเคชันคอนโซล C# อย่างง่าย อาจเป็นไปได้ว่า Visual Studio Code จะสร้างไฟล์ launch.json ที่มีข้อมูลทั้งหมดที่คุณต้องการเพื่อดีบักโค้ดของคุณให้สําเร็จ อย่างไรก็ตาม มีกรณีที่คุณต้องปรับเปลี่ยนการกําหนดค่าการเปิดใช้งาน ดังนั้นจึงเป็นสิ่งสําคัญที่ต้องทําความเข้าใจแอตทริบิวต์ของการกําหนดค่าการเปิดใช้งาน
แอตทริบิวต์ของการกําหนดค่าการเปิดใช้
ไฟล์ launch.json มีการกําหนดค่าการเปิดใช้อย่างน้อยหนึ่งรายการในรายการconfigurations การกําหนดค่าการเปิดใช้ใช้แอตทริบิวต์เพื่อสนับสนุนสถานการณ์การดีบักที่แตกต่างกัน แอตทริบิวต์ต่อไปนี้เป็นข้อบังคับสําหรับการกําหนดค่าการเปิดใช้ทุกครั้ง:
-
name: ชื่อที่จําง่ายซึ่งกําหนดให้กับการกําหนดค่าการเปิดใช้งาน -
type: ชนิดของตัวแก้ไขจุดบกพร่องที่จะใช้สําหรับการกําหนดค่าการเปิดใช้ -
request: ชนิดการร้องขอของการกําหนดค่าการเปิดใช้
ส่วนนี้กําหนดแอตทริบิวต์บางอย่างที่คุณอาจพบ
ชื่อ
แอตทริบิวต์ name ระบุชื่อที่แสดงสําหรับการกําหนดค่าการเปิดใช้ ค่าที่กําหนดให้ name ปรากฏในดรอปดาวน์การกําหนดค่าการเรียกใช้ (บนแผงควบคุมที่ด้านบนของมุมมอง RUN และ DEBUG)
ประเภท
แอตทริบิวต์ type ระบุชนิดของตัวแก้ไขจุดบกพร่องที่จะใช้สําหรับการกําหนดค่าการเปิดใช้ ค่า ระบุ codeclr ชนิดดีบักเกอร์สําหรับแอปพลิเคชัน .NET 5+ (รวมถึงแอปพลิเคชัน C#)
ขอร้อง
แอตทริบิวต์ request ระบุชนิดคําขอสําหรับการกําหนดค่าการเปิดใช้ ในปัจจุบัน ค่า launch และ attach ได้รับการสนับสนุน
PreLaunchTask
แอตทริบิวต์ preLaunchTask ระบุงานที่จะเรียกใช้ก่อนการดีบักโปรแกรมของคุณ งานสามารถพบได้ในไฟล์ tasks.json ซึ่งอยู่ใน .vscode โฟลเดอร์พร้อมกับไฟล์ launch.json การระบุงานbuilddotnet 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 ไฟล์ที่มีชื่อ ว่าDebug101.dll จะถูกสร้างขึ้นเมื่องานสร้างคอมไพล์โปรแกรมของคุณโดยใช้ไฟล์ Program.cs และ Debug101.csproj คุณสามารถค้นหาแฟ้ม Debug101.dll ในมุมมอง EXPLORER โดยการขยายโฟลเดอร์ "bin" และ "Debug" แล้วเปิดโฟลเดอร์ที่แสดงถึงเฟรมเวิร์ก.NET ที่ใช้โดยโครงการโค้ดของคุณ เช่น "net10.0" เวอร์ชัน .NET Framework จะถูกระบุในไฟล์ .csproj ของคุณ
Cwd
แอตทริบิวต์ cwd ระบุไดเรกทอรีการทํางานของกระบวนการเป้าหมาย
Args
แอตทริบิวต์ args ระบุอาร์กิวเมนต์ที่ส่งผ่านไปยังโปรแกรมของคุณเมื่อเปิดใช้งาน ไม่มีอาร์กิวเมนต์ตามค่าเริ่มต้น
ปลอบใจ
แอตทริบิวต์ console ระบุชนิดของคอนโซลที่ใช้เมื่อเรียกใช้แอปพลิเคชัน ตัวเลือกคือ internalConsole, integratedTerminalและexternalTerminal การตั้งค่าเริ่มต้นคือinternalConsole ประเภทคอนโซลถูกกําหนดเป็น:
- การตั้งค่า
internalConsoleสอดคล้องกับแผงคอนโซลดีบักในพื้นที่แผงด้านล่าง Visual Studio Code Editor - การตั้งค่า
integratedTerminalสอดคล้องกับแผงเอาต์พุตในพื้นที่แผงด้านล่างตัวแก้ไขรหัส Visual Studio - การตั้งค่า
externalTerminalที่สอดคล้องกับหน้าต่างเทอร์มินัลภายนอก แอปพลิเคชัน Command Prompt ที่มาพร้อมกับ Windows คือตัวอย่างของหน้าต่างเทอร์มินัล
สําคัญ
แผง DEBUG CONSOLE ไม่สนับสนุนอินพุตคอนโซล ตัวอย่างเช่น ไม่สามารถใช้ DEBUG CONSOLE ได้หากแอปพลิเคชันมี Console.ReadLine() คําสั่ง เมื่อคุณกําลังทํางานกับแอปพลิเคชันคอนโซล C# ที่อ่านการป้อนข้อมูลconsoleของผู้ใช้ การตั้งค่าต้องได้รับการตั้งค่าเป็น integratedTerminal หรือexternalTerminal แอปพลิเคชันคอนโซลที่เขียนไปยังคอนโซล แต่ไม่ได้อ่านอินพุตจากคอนโซล คุณสามารถใช้การตั้งค่าทั้งสาม console รายการได้
หยุดที่รายการ
ถ้าคุณต้องการหยุดที่จุดเข้าใช้งานของเป้าหมาย คุณสามารถเลือกที่จะตั้งค่า stopAtEntry เป็น trueได้
แก้ไขการกําหนดค่าเปิดใช้
มีสถานการณ์มากมายเมื่อคุณอาจต้องการกําหนดค่าไฟล์กําหนดค่าการเปิดใช้ สถานการณ์เหล่านั้นส่วนใหญ่เกี่ยวข้องกับสถานการณ์โครงการขั้นสูงหรือซับซ้อน โมดูลนี้จะมุ่งเน้นไปที่สถานการณ์ง่าย ๆ สองสถานการณ์เมื่ออัปเดตไฟล์การกําหนดค่าการเปิดใช้งาน:
- แอปพลิเคชันคอนโซล C# ของคุณจะอ่านอินพุตจากคอนโซล
- พื้นที่ทํางานของโครงการมีแอปพลิเคชันมากกว่าหนึ่งรายการ
ปรับปรุงการกําหนดค่าการเปิดใช้เพื่อรองรับการป้อนข้อมูลของคอนโซล
ขณะที่คุณอ่านก่อนหน้านี้ แผง DEBUG CONSOLE ไม่สนับสนุนอินพุตคอนโซล หากคุณกําลังดีบักแอปพลิเคชันคอนโซลที่อาศัยการป้อนข้อมูลของผู้ใช้ คุณจําเป็นต้องอัปเดต console แอตทริบิวต์ในการกําหนดค่าการเปิดใช้งานที่เกี่ยวข้อง
วิธีการแก้ไข console แอตทริบิวต์:
เปิดไฟล์ launch.json ในตัวแก้ไขรหัส Visual Studio
ค้นหาแอตทริบิวต์คอนโซล
เลือกเครื่องหมายทวิภาคและค่าที่กําหนด จากนั้นป้อนอักขระเครื่องหมายทวิภาค
โปรดสังเกตว่าเมื่อคุณเขียนทับข้อมูลที่มีอยู่ด้วยเครื่องหมายจุดคู่ 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 คุณใช้มุมมอง RUN และ DEBUG เพื่อดีบักแอปพลิเคชัน คุณต้องการเลือกแอปพลิเคชันที่คุณกําลังดีบักจากอินเทอร์เฟซผู้ใช้ คุณยังต้องการคอมไพล์การอัปเดตโค้ดที่บันทึกไว้ก่อนที่จะแนบตัวดีบักเกอร์ลงในแอปพลิเคชันของคุณ
คุณสามารถบรรลุข้อกําหนดสําหรับสถานการณ์นี้ได้โดยการอัปเดตไฟล์ launch.json และ tasks.json
สกรีนช็อตต่อไปนี้แสดงมุมมอง EXPLORER และโครงสร้างโฟลเดอร์ที่ประกอบด้วย Project123 และ Project456
โปรดสังเกตว่า .vscode โฟลเดอร์ที่มีไฟล์ launch.json และ tasks.json เชื่อมโยงกับโฟลเดอร์พื้นที่ทํางาน 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 และ โปรแกรม สําหรับแอปพลิเคชันที่ระบุทั้งหมด
แอตทริบิวต์ ชื่อ ระบุตัวเลือกการเปิดใช้ที่สามารถเลือกได้ที่แสดงในอินเทอร์เฟซผู้ใช้ของมุมมอง RUN และ 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 ที่มีอยู่ มุมมอง RUN และ DEBUG จะแสดงตัวเลือกการเปิดใช้สําหรับการดีบักแอปพลิเคชัน Project123 หรือ Project456 สกรีนช็อตต่อไปนี้แสดงชื่อของการกําหนดค่าการเปิดใช้ที่แสดงในรายการดรอปดาวน์การกําหนดค่าการเรียกใช้:
สรุป
นี่คือสองสิ่งสําคัญที่ต้องจําจากหน่วยนี้:
- เปิดใช้การตั้งค่าคอนฟิกจะใช้เพื่อระบุแอททริบิวต์ เช่น
name,typerequestpreLaunchTaskprogram, และconsole - นักพัฒนาสามารถแก้ไขการกําหนดค่าการเปิดใช้เพื่อรองรับข้อกําหนดของโครงการ
ตรวจสอบความรู้ของคุณ
คำติชม
หน้านี้มีประโยชน์หรือไม่
ไม่
ต้องการความช่วยเหลือในหัวข้อนี้หรือไม่
ต้องการลองใช้ Ask Learn เพื่อทําให้ชัดเจนหรือแนะนําคุณผ่านหัวข้อนี้หรือไม่