فحص ملف تكوينات التشغيل
- 11 دقائق
لقد رأيت بالفعل أن Visual Studio Code يستخدم ملف launch.json لتكوين مصحح الأخطاء. إذا كنت تقوم بإنشاء تطبيق وحدة تحكم C# بسيط، فمن المحتمل أن يقوم Visual Studio Code بإنشاء ملف launch.json يحتوي على جميع المعلومات التي تحتاجها لتصحيح التعليمات البرمجية بنجاح. ومع ذلك، هناك حالات تحتاج فيها إلى تعديل تكوين تشغيل، لذلك من المهم فهم سمات تكوين التشغيل.
سمات تكوين التشغيل
يتضمن ملف launch.json تكوين تشغيل واحد أو أكثر في configurations القائمة. تستخدم تكوينات التشغيل السمات لدعم سيناريوهات تصحيح الأخطاء المختلفة. السمات التالية إلزامية لكل تكوين تشغيل:
-
name: الاسم المألوف للقارئ المعين لتكوين التشغيل. -
type: نوع مصحح الأخطاء الذي يجب استخدامه لتكوين التشغيل. -
request: نوع الطلب لتكوين التشغيل.
يحدد هذا القسم بعض السمات التي قد تواجهها.
Name
name تحدد السمة اسم العرض لتكوين التشغيل. تظهر القيمة المعينة في name القائمة المنسدلة تكوينات التشغيل (في لوحة عناصر التحكم في أعلى طريقة عرض RUN AND 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يتوافق الإعداد مع لوحة وحدة تحكم DEBUG في منطقة اللوحات أسفل محرر Visual Studio Code. -
integratedTerminalيتوافق الإعداد مع لوحة OUTPUT في منطقة اللوحات أسفل محرر Visual Studio Code. -
externalTerminalيتوافق الإعداد مع نافذة محطة طرفية خارجية. تطبيق موجه الأوامر الذي يأتي مع Windows هو مثال على نافذة المحطة الطرفية.
هام
لا تدعم لوحة وحدة تحكم DEBUG إدخال وحدة التحكم. على سبيل المثال، لا يمكن استخدام وحدة تحكم DEBUG إذا كان التطبيق يتضمن عبارة Console.ReadLine() . عند العمل على تطبيق وحدة تحكم C# يقرأ إدخال المستخدم، console يجب تعيين الإعداد إما إلى integratedTerminal أو externalTerminal. يمكن لتطبيقات وحدة التحكم التي تكتب إلى وحدة التحكم، ولكن لا تقرأ الإدخال من وحدة التحكم، استخدام أي من الإعدادات الثلاثة console .
التوقف عند الإدخال
إذا كنت بحاجة إلى التوقف عند نقطة إدخال الهدف، يمكنك اختياريا تعيين stopAtEntry إلى .true
تحرير تكوين التشغيل
هناك الكثير من السيناريوهات عندما قد تحتاج إلى تخصيص ملف تكوين التشغيل. تتضمن العديد من هذه السيناريوهات سيناريوهات مشروع متقدمة أو معقدة. تركز هذه الوحدة على سيناريوهين بسيطين عند تحديث ملف تكوين التشغيل مطلوب:
- يقرأ تطبيق وحدة تحكم C# الإدخال من وحدة التحكم.
- تتضمن مساحة عمل المشروع أكثر من تطبيق واحد.
تحديث تكوين التشغيل لاستيعاب إدخال وحدة التحكم
كما قرأت سابقا، لا تدعم لوحة وحدة تحكم DEBUG إدخال وحدة التحكم. إذا كنت تقوم بتصحيح تطبيق وحدة تحكم يعتمد على إدخال المستخدم، فستحتاج إلى تحديث السمة console في تكوين التشغيل المقترن.
لتحرير السمة console :
افتح ملف launch.json في محرر Visual Studio Code.
حدد موقع سمة وحدة التحكم .
حدد النقطين والقيمة المعينة، ثم أدخل حرف نقطتين.
لاحظ أنه عند الكتابة فوق المعلومات الموجودة باستخدام علامة النقطتين، يعرض 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 AND DEBUG لتصحيح أخطاء التطبيقات. تريد تحديد التطبيق الذي تقوم بتصحيحه من واجهة المستخدم. تريد أيضا تحويل أي تحديثات تعليمات برمجية محفوظة برمجيا قبل إرفاق مصحح الأخطاء بالتطبيق الخاص بك.
يمكنك تحقيق متطلبات هذا السيناريو عن طريق تحديث ملفات launch.json وملفات tasks.json.
تظهر لقطة الشاشة التالية طريقة عرض EXPLORER وبنية المجلد التي تحتوي على Project123 وProject456.
لاحظ أن المجلد الذي .vscode يحتوي على launch.json وملفات tasks.json مقترن بمجلد مساحة العمل، والمشروعات الخاصة، وليس مجلدات المشروع الفردية.
يوضح المثال التالي كيف يمكنك تكوين ملف 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 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 في مكانها، تعرض طريقة العرض RUN AND DEBUG خيارات التشغيل لتصحيح أخطاء تطبيق Project123 أو Project456. تظهر لقطة الشاشة التالية أسماء تكوينات التشغيل المعروضة في القائمة المنسدلة لتكوين التشغيل:
خلاصة
فيما يلي أمران مهمان يجب تذكرهما من هذه الوحدة:
- يتم استخدام تكوينات التشغيل لتحديد سمات مثل
nameوtyperequestpreLaunchTaskprogram.console - يمكن للمطورين تحرير تكوين تشغيل لاستيعاب متطلبات المشروع.