मेरे पास एक सहायक परियोजना है जिसका उपयोग मैं उन सभी अनुप्रयोगों में करता हूं जो मैं बनाता हूं। इसमें कुछ विस्तार विधियां और सामान्य सहायक वर्गों का एक गुच्छा, नियंत्रण आदि शामिल हैं। मैं समय-समय पर सहायक परियोजना को अद्यतन / विस्तारित करता हूं। ये आमतौर पर छोटी और असंबंधित परियोजनाएं हैं, और मैं उन सभी पर काम करने वाला एकमात्र व्यक्ति हूं।
मैंने इसका उपयोग करने के लिए दो तरीकों की कोशिश की
- प्रत्येक प्रोजेक्ट में .cs फाइलें सीधे (लिंक के रूप में जोड़ें) जोड़ें जहां मैं उनका उपयोग करता हूं
- इसे .dll के रूप में संकलित करें और इसे संदर्भ के रूप में जोड़ें
मुझे इन दृष्टिकोणों के कुछ लाभ और कमियां दिखाई देती हैं।
पहले वाला:
- सरल है, क्योंकि हेल्पर कक्षाएं एक्सई फ़ाइल में संकलित हो जाती हैं, इसलिए मैं अक्सर बहुत आसानी से सिर्फ एक .exe फ़ाइल प्रदान कर सकता हूं जो बस ठीक काम करेगा। क्योंकि मैं लिंक के रूप में जोड़ता हूं, मुझे पूरा यकीन है कि जब भी मैं किसी भी प्रोजेक्ट का निर्माण करता हूं जो हेल्पर का उपयोग करता है, तो हेल्पर फाइलें नवीनतम संस्करण होंगी।
- और भी सरल है, क्योंकि मैं फ़ाइलों को अलग कर सकता हूं, ताकि .NET 4.0 पर ठीक चलने वाले मेरे एक्सटेंशन तरीकों को .NET 4.5 की आवश्यकता वाले लोगों से अलग से संदर्भित किया जा सके, जिसका अर्थ है कि संपूर्ण के रूप में ऐप .NET 4.0 पर चल सकता है
- ब्रेकपाइंट आदि के सभी लाभों के साथ कोड के माध्यम से डिबग करने की अनुमति देता है ...
- नहीं लगता है 'सबसे अच्छा अभ्यास'
दूसरा एक:
- सही दृष्टिकोण प्रतीत होता है, लेकिन:
- मुझे एक अलग .dll फ़ाइल देने की आवश्यकता है, जो किसी कारण से उपयोगकर्ताओं के लिए बहुत अधिक कठिन है (वे .dll के बिना मेरे कार्यक्रमों को साझा करते हैं, जो तब स्टार्टअप पर क्रैश हो जाते हैं)
- क्योंकि यह एक एकल .dll में संकलित हो जाता है, इसे .NET के उच्चतम संस्करण की आवश्यकता होगी - मेरे कई उपयोगकर्ताओं के पास .NET 4.5 नहीं है और केवल मेरे सहायक वर्ग के कुछ तत्वों को इसकी आवश्यकता है, जिसका अर्थ है कि मैं कुछ लोगों को मजबूर कर सकता हूं बिना किसी कारण के उनके सिस्टम को अपडेट करने के लिए
- मुझे यह भी सुनिश्चित करने की आवश्यकता है कि जब भी मैं अपने किसी भी प्रोग्राम को अपडेट करता हूं, मैं भी .dll फ़ाइल वितरित करता हूं - भले ही मुझे नहीं पता कि यह पिछले संस्करण के बाद से बदल दिया गया है, या नहीं (यह हो सकता था, लेकिन यह के रूप में अच्छी तरह से एक ही संस्करण हो सकता है)। मैं विधानसभा संस्करण का ट्रैक रखे बिना, यह निर्धारित करने का एक सरल तरीका नहीं देख सकता, जो अतिरिक्त काम है। अभी के लिए, जब मैं अपने प्रोग्राम्स को अपडेट करता हूं, तो मैं केवल अपडेटेड एक्सई डिलीवर करता हूं, और मैं इसे छोटा और लो प्रोफाइल रखना पसंद करता हूं।
तो, यहाँ .dll फ़ाइल का उपयोग करने के लिए वास्तविक लाभ क्या है? कृपया ध्यान दें, कि मैं सभी एप्लिकेशन और हेल्पर फ़ाइलों का एकमात्र व्यक्ति संपादन कोड हूं।
इसके अलावा, स्पष्ट करने के लिए - एप्लिकेशन आमतौर पर बहुत कम होते हैं, जबकि सहायक वर्गों में निहित कोड उन सभी के लिए पूरी तरह से सामान्य है (कुछ सरल स्ट्रिंग-तुलना, पथ या एक्सएमएल संचालन आदि)
दरअसल, किसी ने मुझे एहसास कराया कि अभी तीसरा विकल्प है। जैसा कि मेरे पास एक सेपरेट प्रोजेक्ट में सहायक कोड है, मैं इस परियोजना को अपने प्रत्येक अलग-अलग अनुप्रयोगों के समाधान में जोड़ सकता हूं - जो एकल फ़ाइलों के लिए 'एड के रूप में लिंक' की तरह काम करता है, सिवाय इसके कि मैं केवल एक ही प्रोजेक्ट जोड़ूं ... लेकिन जैसा कि डॉक्टर ब्राउन ने देखा है, इसका अनिवार्य रूप से मतलब है कि .dll को वैसे भी प्रोजेक्ट में जोड़ना होगा ...
फिर भी एक और बात जो dll फ़ाइलों का उपयोग न करने के पक्ष में है, सहायक वर्ग के माध्यम से सक्रिय रूप से डिबग करने की क्षमता है ...