C# (.NET) के लिए CLI फ्रेमवर्क: कंसोल एप्लिकेशन बनाना

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# (.NET) के लिए CLI फ्रेमवर्क: पेशेवर कंसोल एप्लिकेशन बनाना



C# (.NET) में आधुनिक डेवलपमेंट केवल वेब एप्लिकेशन और डेस्कटॉप प्रोग्राम तक सीमित नहीं है। कंसोल एप्लिकेशन (CLI) ऑटोमेशन, DevOps-टूल्स, एडमिनिस्ट्रेशन यूटिलिटीज और आंतरिक स्क्रिप्ट के लिए आवश्यक बने हुए हैं। हालांकि, कमांड लाइन आर्गुमेंट्स को मैन्युअल रूप से पार्स करना एक थकाऊ और त्रुटि-प्रवण कार्य है। विशेष CLI-फ्रेमवर्क मदद के लिए आते हैं, जो आर्गुमेंट पार्सिंग, हेल्प जनरेशन, वैलिडेशन और यहां तक कि रंगीन आउटपुट का ध्यान रखते हैं।



इस लेख में, हम C# (.NET) पर CLI बनाने के लिए तीन सबसे लोकप्रिय ओपन-सोर्स समाधानों पर विचार करेंगे: 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.cs मेंvar app = new CommandApp<GreetCommand>();app.Run(args);


अन

अनुशंसाएँ