C#: إعداد بيئة التطوير
إن إعداد بيئة التطوير يشبه تجهيز مرسم فني — فبمجرد توفر اللوحة (حزمة أدوات تطوير .NET) والفرش (VS Code)، يمكنك البدء في الإبداع (كتابة كود C#).
1. تثبيت حزمة أدوات تطوير البرامج (SDK) لـ .NET
تعد حزمة أدوات تطوير البرمجيات (.NET SDK) مجموعة الأدوات الأساسية لتطوير برامج لغة C#، حيث تحتوي على المُترجم وبيئة التشغيل وأدوات إدارة المشاريع. ويجب عليك تثبيتها أولاً قبل أن تتمكن من كتابة برامج لغة C# وترميزها وتشغيلها.
(1) التثبيت على نظام ويندوز
- قم بزيارة https://dotnet.microsoft.com/download/dotnet/8.0 لتنزيل برنامج تثبيت .NET 8 SDK
- قم بتشغيل برنامج التثبيت وأكمل عملية التثبيت باستخدام الخيارات الافتراضية
- افتح نافذة الأوامر وتحقق مما يلي:
dotnet --version
8.0.xxx
إذا ظهر رقم الإصدار، فهذا يعني أن عملية التثبيت قد نجحت.
(2) التثبيت على نظام macOS
التثبيت عبر Homebrew:
brew install dotnet-sdk
أو قم بتنزيل برنامج التثبيت الخاص بنظام macOS من الموقع الرسمي. وتحقق من ذلك بالطريقة نفسها:
dotnet --version
(3) التثبيت على نظام لينكس
أوبونتو/ديبيان:
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0
CentOS/RHEL:
sudo dnf install -y dotnet-sdk-8.0
التحقق من التثبيت:
dotnet --version
💡 نصيحة: يستخدم هذا الكتاب .NET 8 (LTS — الدعم طويل الأمد). تأكد من تثبيت حزمة SDK، وليس مجرد بيئة التشغيل (Runtime) فقط. تتضمن حزمة SDK جميع الأدوات اللازمة للتطوير.
(4) المكونات الرئيسية المضمنة في حزمة تطوير التطبيقات (SDK)
| المكون | الدور |
|---|---|
| مُركِّب روزلين | يُركِّب كود لغة C# إلى لغة وسيطة (IL) |
| dotnet CLI | أداة سطر الأوامر لإنشاء المشاريع وتجميعها وتشغيلها |
| بيئة تشغيل .NET | تنفذ البرامج المُجمَّعة |
| مدير حزم NuGet | يدير تبعيات المكتبات الخارجية |
2. تهيئة VS Code
VS Code هو محرر أكواد مجاني طورته شركة مايكروسوفت. وعند استخدامه مع ملحق C#، يوفر تجربة تطوير قوية بلغة C#.
(1) تثبيت VS Code
انتقل إلى https://code.visualstudio.com للتنزيل والتثبيت.
(2) تثبيت الملحقات المطلوبة
افتح VS Code، واضغط على Ctrl+Shift+X لفتح متجر الإضافات، ثم ابحث عن الإضافة التالية وقم بتثبيتها:
| التمديد | الغرض |
|---|---|
| مجموعة أدوات تطوير C# (مايكروسوفت) | دعم شامل لتمييز بناء الجملة، وIntelliSense، وتصحيح الأخطاء، وإدارة المشاريع |
| C# (مايكروسوفت) | خدمة لغة C# الأساسية (تُثبَّت عادةً تلقائيًّا مع Dev Kit) |
(3) تهيئة مجموعة أدوات تطوير C#
بعد تثبيت C# Dev Kit، يقوم الملحق تلقائيًا باكتشاف حزمة SDK الخاصة بـ .NET المثبتة لديك. يمكنك التأكد من صحة الإعدادات من خلال:
- اضغط على
Ctrl+Shift+P، ثم اكتب.NET: New Project— إذا ظهرت قائمة قوالب المشاريع، فهذا يعني أن الإعداد قد تم بنجاح - يجب أن يعرض شريط الحالة السفلي رقم إصدار .NET SDK
⚠️ تحذير: عند فتح مجلد في VS Code، قم بإنشاء مجلد مخصص (على سبيل المثال، csharp-learn) وافتح المجلد بأكمله في VS Code بدلاً من فتح ملف واحد فقط. وهذا أمر ضروري لكي يعمل C# Dev Kit بشكل صحيح.
3. برنامجك الأول: Hello World
▶ مثال
استخدم واجهة سطر الأوامر لـ dotnet لإنشاء أول تطبيق وحدة تحكم لك:
dotnet new console -n MyFirstApp
The template "Console App" was created successfully.
Processing post-creation actions...
Restoring packages...
Determining projects to restore...
Restored MyFirstApp.csproj (in 1.2s).
انتقل إلى مجلد المشروع وقم بتشغيله:
cd MyFirstApp
dotnet run
Hello, World!
هذا هو برنامجك الأول بلغة C#! يقوم الأمر dotnet new console بإنشاء بنية المشروع والكود تلقائيًّا.
(1) هيكل المشروع
بعد الإنشاء، يحتوي مجلد المشروع على:
MyFirstApp/
├── MyFirstApp.csproj
├── Program.cs
└── obj/
└── ...
| الملف | الغرض |
|---|---|
Program.cs |
نقطة دخول البرنامج، تحتوي على الكود الرئيسي |
MyFirstApp.csproj |
ملف تكوين المشروع، يحدد حزمة SDK وإطار العمل المستهدف، وما إلى ذلك |
obj/ |
دليل إخراج البنية المتوسطة |
4. الأوامر الشائعة في واجهة سطر الأوامر لـ .NET
تعد واجهة سطر الأوامر dotnet CLI الأداة الأساسية لسطر الأوامر في مجال تطوير .NET. وإتقان استخدامها أكثر كفاءة من الاعتماد على بيئة تطوير متكاملة (IDE).
(1) أوامر إدارة المشاريع
| الأمر | الغرض | مثال |
|---|---|---|
dotnet new console |
إنشاء مشروع وحدة التحكم | dotnet new console -n MyApp |
dotnet new classlib |
إنشاء مشروع مكتبة فئات | dotnet new classlib -n MyLib |
dotnet new list |
عرض جميع القوالب المتاحة | dotnet new list |
تحدد المعلمة -n اسم المشروع. وفي حالة عدم ذكرها، يتم استخدام اسم المجلد الحالي.
(2) الإنشاء والتشغيل والنشر
| الأمر | الغرض | مثال |
|---|---|---|
dotnet build |
ترجمة المشروع (دون تشغيله) | dotnet build |
dotnet run |
ترجمة المشروع وتشغيله | dotnet run |
dotnet publish |
نشر المشروع (للنشر) | dotnet publish -c Release |
▶ مثال
dotnet build
MSBuild version 17.8.xxxx
Determining projects to restore...
Restored MyFirstApp.csproj (in 102 ms).
MyFirstApp -> G:\csharp-learn\MyFirstApp\bin\Debug\net8.0\MyFirstApp.dll
Build succeeded.
0 Warning(s)
0 Error(s)
🔥 نصيحة: dotnet run = dotnet build + التنفيذ التلقائي. استخدم dotnet run للاختبار السريع أثناء التطوير، وdotnet build للتحقق من وجود مشكلات في الترجمة في عمليات البناء الرسمية.
5. العبارات ذات المستوى الأعلى مقابل البرنامج التقليدي. الرئيسي
قدمت لغة C# 9 العبارات ذات المستوى الأعلى، مما أدى إلى تبسيط بناء جملة برامج وحدة التحكم بشكل كبير. إن فهم كلا الأسلوبين يساعدك على قراءة كود لغة C# من فترات زمنية مختلفة.
(1) العبارات ذات المستوى الأعلى (C# 9+، الإعداد الافتراضي)
يُنشئ dotnet new console ملفًا Program.cs يستخدم العبارات ذات المستوى الأعلى بشكل افتراضي:
System.Console.WriteLine("Hello, World!");
سطر واحد فقط — بدون مساحة أسماء، ولا فئة، ولا دالة Main. يقوم المُجمِّع تلقائيًّا بتضمينه في دالة Main مُولَّدة.
(2) البرنامج التقليدي. النمط الرئيسي
النهج المتبع قبل الإصدار C# 9، حيث يجب أن يكون كل الكود داخل دالة Main:
using System;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
(3) مقارنة الأسلوبين
| مقال خاص | تصريحات رفيعة المستوى | البرنامج التقليدي.الصفحة الرئيسية |
|---|---|---|
| حجم الكود | قليل جدًّا | المزيد من النصوص النمطية |
| طريقة الإدخال | تم إنشاؤها تلقائيًا بواسطة المُجمِّع | تم تعريفها يدويًّا static void Main |
إعلانات using |
يمكن حذفها (استخدم الأسماء الكاملة) | عادةً ما تكون هناك حاجة إلى using System; |
| مساحة الاسم | لا حاجة إلى إعلان | يجب الإعلان |
| معلمات سطر الأوامر | الوصول مباشرةً عبر المتغير args |
عبر المعلمة Main(string[] args) |
| حالات الاستخدام | البرامج البسيطة، والتعلم، وكتابة البرامج النصية | المشاريع الكبيرة التي تتطلب تحكمًا دقيقًا في الوصول |
| إصدار C# | C# 9+ | جميع الإصدارات |
📌 النقطة الأساسية: تعتبر العبارات ذات المستوى الأعلى والأسلوب التقليدي متكافئين من الناحية الوظيفية. فالعبارات ذات المستوى الأعلى ما هي إلا «تجميل نحوي» — فالكود IL الذي يتم إنشاؤه هو نفسه في الأساس. ولا يمكن استخدام العبارات ذات المستوى الأعلى إلا في ملف واحد فقط ضمن المشروع.
(4) الوصول إلى معلمات سطر الأوامر باستخدام العبارات ذات المستوى الأعلى
if (args.Length > 0)
{
System.Console.WriteLine($"Hello, {args[0]}!");
}
else
{
System.Console.WriteLine("Hello, World!");
}
dotnet run -- Alice
Hello, Alice!
يتم تمرير المعلمات التي تلي -- إلى البرنامج. وفي العبارات ذات المستوى الأعلى، يقوم المُجمِّع بإدراج args تلقائيًّا.
6. الأخطاء الشائعة في المُجمِّع
بصفتك مبتدئًا، ستواجه بالتأكيد أخطاء في المُترجم. لا داعي للذعر — فتعلم كيفية قراءة رسائل الخطأ أهم من تجنبها.
(1) CS1002: يُتوقع وجود فاصلة منقوطة
System.Console.WriteLine("Hello, World!")
Program.cs(1,40): error CS1002: ; expected
تنسيق الخطأ هو اسم الملف (السطر، العمود): رمز الخطأ: الوصف. ينقص هذا السطر فاصلة منقوطة في نهايته — يجب أن تنتهي كل جملة في لغة C# بفاصلة منقوطة.
(2) CS0103: الاسم غير موجود في السياق الحالي
Console.WriteLine("Hello, World!");
Program.cs(1,1): error CS0103: The name 'Console' does not exist in the current context
لقد استخدمت Console دون using System; أو الاسم الكامل System.Console. هناك حلان: أضف using System; أو استخدم System.Console.
(3) CS0117: لا يحتوي على تعريف
System.Console.WritLine("Hello, World!");
Program.cs(1,17): error CS0117: 'Console' does not contain a definition for 'WritLine'
تم كتابة WriteLine بشكل خاطئ على أنها WritLine. يُعلمك المُترجم أن الفئة Console لا تحتوي على عضو باسم WritLine — يرجى التحقق من التهجئة.
(4) CS0120: مطلوب مرجع كائن لحقل غير ثابت
namespace MyApp
{
class Program
{
string name = "C#";
static void Main(string[] args)
{
System.Console.WriteLine(name);
}
}
}
Program.cs(8,37): error CS0120: An object reference is required for the non-static field, method, or property 'Program.name'
لقد قمت بالوصول إلى حقل غير ثابت name من خلال الطريقة الثابتة Main. تنتمي الطرق الثابتة إلى الفئة نفسها، في حين أن العناصر غير الثابتة تنتمي إلى مثيلات الفئة — لذا يتعين عليك إنشاء كائن أولاً.
⚠️ نصيحة لقراءة رسائل الخطأ: قد يشير رقم السطر المذكور إلى الموضع الذي يلي الخطأ الفعلي. إذا ظهرت رسالة خطأ في سطر ما، فتحقق من هذا السطر والسطر الذي يسبقه للتأكد من صحة التهجئة وعلامات الفاصلة المنقوطة والأقواس. رموز CS هي رموز أخطاء رسمية من Microsoft — يمكنك البحث عن رقم CS عبر الإنترنت للحصول على تفسيرات مفصلة.
❓ أسئلة شائعة
dotnet run وdotnet build؟dotnet build فقط بترجمة المشروع وإنشاء ملفات DLL دون تشغيله. أما dotnet run فيقوم بالترجمة (عند الحاجة) ثم يقوم بتشغيل البرنامج تلقائيًا. استخدم dotnet run لتسهيل عملية تصحيح الأخطاء أثناء التطوير، وdotnet build لعمليات بناء CI/CD أكثر تحكمًا.📖 ملخص
- يُعد .NET 8 SDK مجموعة الأدوات الأساسية لتطوير C#، ويمكن تثبيته على أنظمة التشغيل Windows وmacOS وLinux، وقد تم التحقق من صلاحيته بواسطة
dotnet --version - يوفر VS Code المزود بملحق C# Dev Kit بيئة تطوير لغة C# خفيفة الوزن لكنها قوية في الوقت نفسه
- تُعد واجهة سطر الأوامر (CLI) لـ dotnet الأداة الأساسية لإدارة المشاريع:
dotnet newللإنشاء،dotnet buildللتجميع،dotnet runللتنفيذ - تعتبر العبارات ذات المستوى الأعلى (C# 9+) أسلوبًا مبسطًا يعادل من الناحية الوظيفية العبارة التقليدية Program.Main — وينبغي للمبتدئين البدء باستخدام العبارات ذات المستوى الأعلى
- تحتوي رسائل أخطاء المُترجم على اسم الملف ورقم السطر ورمز CS والوصف — وتعد تعلم كيفية قراءتها مهارة أساسية
📝 تمارين
- قم بتثبيت حزمة أدوات تطوير البرامج (SDK) لـ .NET 8 على جهاز الكمبيوتر الخاص بك وتأكد من أن
dotnet --versionيُعرض بشكل صحيح. قم بتدوين رقم الإصدار - استخدم
dotnet new console -n Homework02لإنشاء مشروع. قم بتعديل ملف Program.cs بحيث يعرض اسمك وتحية (على سبيل المثال، "مرحبًا، أنا أليكس، وقد بدأت في تعلم لغة C#!")، ثم قم بتشغيله والتقط لقطة شاشة - أعد كتابة نسخة العبارات ذات المستوى الأعلى من التمرين 2 وفقًا للأسلوب التقليدي Program.Main، وتأكد من أن كلا النسختين تنتجان نفس الناتج
- قم بإدخال 3 أخطاء في المُترجم عن قصد (فقدان فاصلة منقوطة، خطأ إملائي، حذف كلمة using)، وسجل أكواد CS وأوصاف الأخطاء، وتدرب على قراءة رسائل الخطأ