C# (.NET) के लिए CLI फ्रेमवर्क: System.CommandLine और Cocona

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

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

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

C# (.NET) के लिए CLI फ्रेमवर्क: System.CommandLine और Cocona

\n\n

C# में कंसोल एप्लिकेशन (CLI) बनाना लंबे समय से string[] args के माध्यम से कमांड लाइन आर्गुमेंट्स को मैन्युअल रूप से पार्स करने और बोझिल सशर्त संरचनाओं से जुड़ा हुआ था। हालांकि, .NET इकोसिस्टम के विकास के साथ, विशेष फ्रेमवर्क सामने आए हैं जो दिनचर्या को संभालते हैं: आर्गुमेंट पार्सिंग, हेल्प जनरेशन, वैलिडेशन और यहां तक कि डिपेंडेंसी इंजेक्शन (DI)। इस लेख में, हम दो सबसे लोकप्रिय दृष्टिकोणों पर विचार करेंगे: Microsoft का आधिकारिक System.CommandLine और हल्का लेकिन शक्तिशाली Cocona।

\n\n

दोनों उपकरण आपको स्वच्छ, घोषणात्मक कोड लिखने की अनुमति देते हैं जिसे बनाए रखना और परीक्षण करना आसान है। आप सीखेंगे कि उन्हें अपने प्रोजेक्ट में जल्दी से कैसे जोड़ें, कमांड और आर्गुमेंट्स को कैसे परिभाषित करें, और वास्तविक कोड उदाहरण भी देखेंगे।

\n\n

1. System.CommandLine

\n\n

System.CommandLine Microsoft की आधिकारिक लाइब्रेरी है, जो .NET SDK ( .NET 6 से शुरू) का हिस्सा है। यह जटिल CLI एप्लिकेशन बनाने के लिए सुविधाओं का एक पूरा सेट प्रदान करता है: नेस्टेड कमांड, Tab द्वारा ऑटो-कम्प्लीशन, वैलिडेशन, एसिंक्रोनस हैंडलर और हेल्प जनरेशन।

\n\n

स्थापना

\n

NuGet के माध्यम से पैकेज जोड़ें:

\n
dotnet add package System.CommandLine --version 2.0.0-beta4.22272.1
\n\n

उदाहरण: दो ऑपरेशनों वाला कैलकुलेटर

\n

एक सरल एप्लिकेशन बनाएं जो दो संख्याओं के साथ add या multiply कमांड स्वीकार करता है:

\n
using System.CommandLine;\n\n// रूट कमांड को परिभाषित करें\nvar rootCommand = new RootCommand("सरल कैलकुलेटर");\n\n// "add" सबकमांड बनाएं\nvar addCommand = new Command("add", "दो संख्याओं का जोड़");\nvar addXOption = new Option<int>("--x", "पहली संख्या") { IsRequired = true };\nvar addYOption = new Option<int>("--y", "दूसरी संख्या") { IsRequired = true };\naddCommand.AddOption(addXOption);\naddCommand.AddOption(addYOption);\n\naddCommand.SetHandler((x, y) =>\n{\n    Console.WriteLine($"जोड़ का परिणाम: {x + y}");\n}, addXOption, addYOption);\n\n// "multiply" सबकमांड बनाएं\nvar multiplyCommand = new Command("multiply", "दो संख्याओं का गुणा");\nvar multXOption = new Option<int>("--x", "पहली संख्या") { IsRequired = true };\nvar multYOption = new Option<int>("--y", "दूसरी संख्या") { IsRequired = true };\nmultiplyCommand.AddOption(multXOption);\nmultiplyCommand.AddOption(multYOption);\n\nmultiplyCommand.SetHandler((x, y) =>\n{\n    Console.WriteLine($"गुणा का परिणाम: {x * y}");\n}, multXOption, multYOption);\n\n// रूट में कमांड जोड़ें\nrootCommand.AddCommand(addCommand);\nrootCommand.AddCommand(multiplyCommand);\n\n// चलाएं\nawait rootCommand.InvokeAsync(args);
\n\n

एप्लिकेशन चलाना:

\n
dotnet run -- add --x 5 --y 3\n# आउटपुट: जोड़ का परिणाम: 8\n\ndotnet run -- multiply --x 4 --y 7\n# आउटपुट: गुणा का परिणाम: 28
\n\n

System.CommandLine की प्रमुख विशेषताएं

\n
    \n
  • ऑटो-कम्प्लीशन — bash और PowerShell के लिए Tab-पूर्णता का अंतर्निहित समर्थन।
  • \n
  • हेल्प जनरेशन — --help फ्लैग स्वचालित रूप से सभी कमांड और विकल्पों का विवरण तैयार करता है।
  • \n
  • वैलिडेशन — अनिवार्य पैरामीटर, मानों की श्रेणी और कस्टम जांच सेट की जा सकती है।
  • \n
  • एसिंक्रोनसिटी — हैंडलर async Task का समर्थन करते हैं।
  • \n
  • परीक्षण — TestConsole के साथ यूनिट टेस्ट लिखना आसान है।
  • \n
\n\n

2. Cocona

\n\n

Cocona एक वैकल्पिक फ्रेमवर्क है जो एट्रीब्यूट्स और स्वचालित पैरामीटर बाइंडिंग के कारण अधिक संक्षिप्त सिंटैक्स प्रदान करता है। यह छोटे और मध्यम आकार के प्रोजेक्ट्स के लिए आदर्श है जहां विकास की गति महत्वपूर्ण है। Cocona DI, middleware और नेस्टेड कमांड का समर्थन करता है।

\n\n

स्थापना

\n
dotnet add package Co                    

अनुशंसाएँ