C# (.NET) के लिए CLI फ्रेमवर्क: System.CommandLine और Cocona
\n\nC# में कंसोल एप्लिकेशन (CLI) बनाना लंबे समय से string[] args के माध्यम से कमांड लाइन आर्गुमेंट्स को मैन्युअल रूप से पार्स करने और बोझिल सशर्त संरचनाओं से जुड़ा हुआ था। हालांकि, .NET इकोसिस्टम के विकास के साथ, विशेष फ्रेमवर्क सामने आए हैं जो दिनचर्या को संभालते हैं: आर्गुमेंट पार्सिंग, हेल्प जनरेशन, वैलिडेशन और यहां तक कि डिपेंडेंसी इंजेक्शन (DI)। इस लेख में, हम दो सबसे लोकप्रिय दृष्टिकोणों पर विचार करेंगे: Microsoft का आधिकारिक System.CommandLine और हल्का लेकिन शक्तिशाली Cocona।
दोनों उपकरण आपको स्वच्छ, घोषणात्मक कोड लिखने की अनुमति देते हैं जिसे बनाए रखना और परीक्षण करना आसान है। आप सीखेंगे कि उन्हें अपने प्रोजेक्ट में जल्दी से कैसे जोड़ें, कमांड और आर्गुमेंट्स को कैसे परिभाषित करें, और वास्तविक कोड उदाहरण भी देखेंगे।
\n\n1. System.CommandLine
\n\nSystem.CommandLine Microsoft की आधिकारिक लाइब्रेरी है, जो .NET SDK ( .NET 6 से शुरू) का हिस्सा है। यह जटिल CLI एप्लिकेशन बनाने के लिए सुविधाओं का एक पूरा सेट प्रदान करता है: नेस्टेड कमांड, Tab द्वारा ऑटो-कम्प्लीशन, वैलिडेशन, एसिंक्रोनस हैंडलर और हेल्प जनरेशन।
\n\nस्थापना
\nNuGet के माध्यम से पैकेज जोड़ें:
\ndotnet add package System.CommandLine --version 2.0.0-beta4.22272.1\n\nउदाहरण: दो ऑपरेशनों वाला कैलकुलेटर
\nएक सरल एप्लिकेशन बनाएं जो दो संख्याओं के साथ add या multiply कमांड स्वीकार करता है:
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एप्लिकेशन चलाना:
\ndotnet run -- add --x 5 --y 3\n# आउटपुट: जोड़ का परिणाम: 8\n\ndotnet run -- multiply --x 4 --y 7\n# आउटपुट: गुणा का परिणाम: 28\n\nSystem.CommandLine की प्रमुख विशेषताएं
\n- \n
- ऑटो-कम्प्लीशन — bash और PowerShell के लिए Tab-पूर्णता का अंतर्निहित समर्थन। \n
- हेल्प जनरेशन —
--helpफ्लैग स्वचालित रूप से सभी कमांड और विकल्पों का विवरण तैयार करता है। \n - वैलिडेशन — अनिवार्य पैरामीटर, मानों की श्रेणी और कस्टम जांच सेट की जा सकती है। \n
- एसिंक्रोनसिटी — हैंडलर
async Taskका समर्थन करते हैं। \n - परीक्षण —
TestConsoleके साथ यूनिट टेस्ट लिखना आसान है। \n
2. Cocona
\n\nCocona एक वैकल्पिक फ्रेमवर्क है जो एट्रीब्यूट्स और स्वचालित पैरामीटर बाइंडिंग के कारण अधिक संक्षिप्त सिंटैक्स प्रदान करता है। यह छोटे और मध्यम आकार के प्रोजेक्ट्स के लिए आदर्श है जहां विकास की गति महत्वपूर्ण है। Cocona DI, middleware और नेस्टेड कमांड का समर्थन करता है।
\n\nस्थापना
\ndotnet add package Co पुस्तकालय में भी
Rust में XML के साथ काम: roxmltree, quick-xml और serde-xml-rs लाइब्रेरी
Goose Go: पूर्ण गाइड, माइग्रेशन और उदाहरण
Prometheus मेट्रिक्स Rust में: prometheus और metrics-exporter-prometheus लाइब्रेरी
TypeScript में अंतर्राष्ट्रीयकरण (i18n): i18next लाइब्रेरी