أطر CLI لـ C# (.NET): إنشاء تطبيقات وحدة التحكم

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

أطر CLI لـ C# (.NET): إنشاء تطبيقات وحدة تحكم احترافية



التطوير الحديث بلغة C# (.NET) لا يقتصر على تطبيقات الويب وتطبيقات سطح المكتب. تظل تطبيقات وحدة التحكم (CLI) مطلوبة للأتمتة، وأدوات DevOps، وأدوات الإدارة، والنصوص الداخلية. ومع ذلك، فإن التحليل اليدوي لوسائط سطر الأوامر مهمة شاقة وعرضة للأخطاء. هنا تأتي أطر CLI المتخصصة للمساعدة، والتي تتولى تحليل الوسائط، وإنشاء التعليمات، والتحقق من الصحة، وحتى الإخراج الملون.



في هذه المقالة، سنستعرض ثلاثة من أشهر الحلول مفتوحة المصدر لإنشاء CLI بلغة C# (.NET): System.CommandLine (الحزمة الرسمية من Microsoft)، Spectre.Console و Cocona. ستتعرف على إمكانياتها الرئيسية، وسترى أمثلة على الكود، وستتمكن من اختيار الأداة المناسبة لمشروعك.



1. System.CommandLine (Microsoft)



System.CommandLine هي مكتبة رسمية من Microsoft، مصممة لإنشاء تطبيقات وحدة تحكم حديثة مع دعم غني لتحليل الوسائط، والتحقق من الصحة، والإكمال التلقائي، وإنشاء التعليمات. تُستخدم بنشاط في .NET SDK وأدوات Microsoft الأخرى.



الإمكانيات الرئيسية:

  • تعريف تصريحي للأوامر والخيارات والوسائط.
  • إنشاء تعليمات تلقائي (--help).
  • دعم middleware لمعالجة الأخطاء والتسجيل.
  • التحقق المدمج من صحة الأنواع والقيم.
  • إمكانية التكامل مع Dependency Injection.


مثال على الكود:

using System.CommandLine;

var rootCommand = new RootCommand("آلة حاسبة CLI بسيطة");

var argA = new Argument<int>("a", "الرقم الأول");var argB = new Argument<int>("b", "الرقم الثاني");var optMultiply = new Option<bool>("--multiply", "الضرب بدلاً من الجمع");

rootCommand.AddArgument(argA);rootCommand.AddArgument(argB);rootCommand.AddOption(optMultiply);

rootCommand.SetHandler((int a, int b, bool multiply) =>{ int result = multiply ? a * b : a + b; Console.WriteLine($"النتيجة: {result}");}, argA, argB, optMultiply);

await rootCommand.InvokeAsync(args);


التشغيل: dotnet run -- 5 3 --multiply سيعرض النتيجة: 15.



2. Spectre.Console



Spectre.Console ليس مجرد إطار CLI، بل هو نظام بيئي كامل لإنشاء تطبيقات وحدة تحكم جميلة وتفاعلية. يتضمن تحليل الوسائط (عبر حزمة Spectre.Console.Cli)، والإخراج الملون، والجداول، وأشرطة التقدم، والتقويمات، وحتى الرسوم المتحركة.



الإمكانيات الرئيسية:

  • تعريف تصريحي للأوامر باستخدام السمات.
  • إنشاء تعليمات تلقائي مع تنسيق ألوان.
  • دعم مدمج لـ DI والتحقق من الصحة.
  • مجموعة غنية من الأدوات: الجداول، الأشجار، اللوحات، التقويمات.
  • استعلامات تفاعلية (اختيار من قائمة، تأكيد، إدخال نص).


مثال على الكود (أمر مع سمات):

using Spectre.Console;using Spectre.Console.Cli;

public class GreetCommand : Command<GreetSettings>{ public override int Execute(CommandContext context, GreetSettings settings) { AnsiConsole.MarkupLine($"[bold green]مرحباً، {settings.Name}![/]"); if (settings.Repeat > 1) { AnsiConsole.MarkupLine($"[yellow]تم التكرار {settings.Repeat} مرة(مرات)[/]"); } return 0; }}

public class GreetSettings : CommandSettings{ [CommandArgument(0, "[Name]")] public string Name { get; set; } = "العالم";

[CommandOption("-r|--repeat <N>")] public int Repeat { get; set; } = 1;}

// في Program.csvar app = new CommandApp<GreetCommand>();app.Run(args);


طلب

توصيات