परिचय: .NET लाइब्रेरीज़ की भूलभुलैया
\n\nयदि आपने कभी Visual Studio या Rider में कोई नया प्रोजेक्ट बनाया है, तो आपने शायद दो समान लेकिन भ्रमित करने वाले टेम्पलेट देखे होंगे: Class Library (.NET Core) और Class Library (.NET Standard)। एक स्वाभाविक प्रश्न उठता है: "आखिर इनमें अंतर क्या है? और मुझे क्या चुनना चाहिए ताकि बाद में सब कुछ दोबारा न लिखना पड़े?"
\n\nयह केवल एक शैक्षणिक रुचि नहीं है। Stack Overflow पर इस प्रश्न को हज़ारों बार देखा गया है, और इन दो प्रकार के प्रोजेक्ट्स के बीच भ्रम शुरुआती लोगों की सबसे आम गलतियों में से एक है। इस लेख में, हम इस दुविधा को हमेशा के लिए समझ लेंगे, C# में वास्तविक कोड उदाहरण देखेंगे, और पता लगाएंगे कि आपके कार्य के लिए किस प्रकार की लाइब्रेरी उपयुक्त है।
\n\n1. इतिहास में एक संक्षिप्त भ्रमण: .NET Framework से एकीकरण के युग तक
\n\nअंतर समझने के लिए, हमें यह याद रखना होगा कि प्लेटफ़ॉर्म कैसे विकसित हुआ। पहले केवल .NET Framework था - विंडोज़ के लिए एक मोनोलिथिक वातावरण। फिर .NET Core आया - एक क्रॉस-प्लेटफ़ॉर्म, हल्का संस्करण। और यहाँ एक समस्या उत्पन्न हुई: एक ऐसी लाइब्रेरी कैसे लिखें जो दोनों पर काम करे? इसके लिए .NET Standard बनाया गया - API का एक औपचारिक विनिर्देश जो .NET के सभी कार्यान्वयनों में गारंटीकृत रूप से उपलब्ध है।
\n\nहालाँकि, .NET 5 (और उसके बाद .NET 6, 7, 8) के आने के साथ, Microsoft ने प्लेटफ़ॉर्म को एकीकृत कर दिया। अब एक एकल बेस क्लास है - .NET (पहले .NET Core)। इसने खेल के नियमों को बहुत बदल दिया। आइए जानें कि हमारे लिए, डेवलपर्स के लिए, इसका क्या मतलब है।
2. Class Library (.NET Standard) क्या है?
\n\n.NET Standard कोई runtime नहीं है, बल्कि अनुबंधों का एक सेट है। इसे एक "सार्वभौमिक एडाप्टर" के रूप में सोचें। यदि आप netstandard2.0 को लक्षित करते हुए एक लाइब्रेरी बनाते हैं, तो यह काम कर सकती है:
- \n
- .NET Framework 4.6.1+ में \n
- .NET Core 2.0+ में \n
- .NET 5/6/7/8 में \n
- Xamarin, Mono, Unity और यहाँ तक कि UWP में भी \n
यह एक आदर्श विकल्प है यदि आपको अधिकतम प्लेटफ़ॉर्म कवरेज की आवश्यकता है। आप एक बार कोड लिखते हैं - और यह हर जगह काम करता है जहाँ मानक का यह संस्करण समर्थित है।
\n\n.NET Standard लाइब्रेरी के लिए कोड उदाहरण
\n\nआइए स्ट्रिंग्स के साथ काम करने के लिए एक सरल लाइब्रेरी बनाएं, जो netstandard2.0 को लक्षित करती है:
// StringHelper.cs\nusing System;\nusing System.Text.RegularExpressions;\n\nnamespace MyStandardLibrary\n{\n public class StringHelper\n {\n /// <summary>\n /// स्ट्रिंग से सभी HTML टैग हटाता है।\n /// </summary>\n public static string StripHtmlTags(string input)\n {\n if (string.IsNullOrEmpty(input))\n return string.Empty;\n\n // टैग हटाने के लिए सरल लेकिन प्रभावी regex\n return Regex.Replace(input, "<.*?>", string.Empty);\n }\n\n /// <summary>\n /// स्ट्रिंग को उल्टा करता है।\n /// </summary>\n public static string ReverseString(string input)\n {\n if (string.IsNullOrEmpty(input))\n return string.Empty;\n\n char[] chars = input.ToCharArray();\n Array.Reverse(chars);\n return new string(chars);\n }\n }\n}\n\nध्यान दें: हम केवल बेस क्लासेस (System, System.Text.RegularExpressions) का उपयोग कर रहे हैं, जो .NET Standard 2.0 के सभी कार्यान्वयनों में गारंटीकृत रूप से उपलब्ध हैं। यह लाइब्रेरी .NET Framework 4.6.1 पर भी काम करेगी, जिसे Microsoft अब विकसित नहीं कर रहा है, लेकिन जिसका उपयोग अभी भी कॉर्पोरेट क्षेत्र में किया जाता है।
3. Class Library (.NET Core / .NET) क्या है?
\n\nजब आप .NET Core Class Library (या बस .NET Class Library, यदि आपके पास .NET 5+ है) चुनते हैं, तो आप प्लेटफ़ॉर्म के एक विशिष्ट कार्यान्वयन से बंध जाते हैं। प्रोजेक्ट फ़ाइल (csproj) में, आपको कुछ इस तरह दिखाई देगा <Target