क्या आप बता सकते हैं कि C # या .NET में एक असेंबली क्या है?
- यह कहां से शुरू होता है और कहां खत्म होता है?
- मुझे असेंबली के बारे में क्या महत्वपूर्ण जानकारी पता होनी चाहिए?
क्या आप बता सकते हैं कि C # या .NET में एक असेंबली क्या है?
जवाबों:
एक असेंबली आपके कोड का संकलित आउटपुट है, आमतौर पर एक DLL, लेकिन आपका EXE एक असेंबली भी है। यह किसी भी .NET परियोजना के लिए तैनाती की सबसे छोटी इकाई है।
असेंबली में आम तौर पर MSIL (Microsoft मध्यवर्ती भाषा) में .NET कोड होता है जिसे मूल कोड ("JITted" - केवल-इन-टाइम संकलक द्वारा संकलित किया जाएगा) पहली बार किसी दिए गए मशीन पर निष्पादित होता है। उस संकलित कोड को विधानसभा में भी संग्रहीत किया जाएगा और बाद की कॉल पर पुन: उपयोग किया जाएगा।
असेंबली में आइकन, बिटमैप, स्ट्रिंग टेबल आदि जैसे संसाधन भी हो सकते हैं। इसके अलावा, विधानसभा में विधानसभा की घोषणा में मेटाडेटा भी शामिल है - संस्करण संख्या, मजबूत नाम, संस्कृति, संदर्भित विधानसभाओं और इसके बाद की जानकारी।
आपके 99% मामलों में, एक असेंबली डिस्क पर एक भौतिक फ़ाइल के बराबर होती है - एक बहु-फाइल असेंबली (एक असेंबली, एक से अधिक फ़ाइल में वितरित) का मामला एक विषम-बॉल एज केस प्रतीत होता है, जो मैंने किया है .NET विकास के मेरे 5+ वर्षों में अब तक कभी सामना नहीं किया गया।
एक मल्टीफ़ाइल असेंबली में अभी भी DLL या EXE में केवल एक असेंबली मेनिफ़ेस्ट और कई नेटमॉडल फ़ाइलों में MSIL कोड होगा।
Microsoft .NET फ्रेमवर्क में, एक असेंबली एक आंशिक रूप से संकलित कोड लायब्रेरी है जो परिनियोजन, संस्करण और सुरक्षा में उपयोग के लिए है।
http://www.codeguru.com/columns/csharp_learning/article.php/c5845
असेंबली एक फ़ाइल है जो कंपाइलर द्वारा प्रत्येक .NET एप्लिकेशन के सफल संकलन पर स्वचालित रूप से उत्पन्न होती है। यह डायनेमिक लिंक लाइब्रेरी या निष्पादन योग्य फ़ाइल हो सकती है। यह केवल एक आवेदन के लिए एक बार उत्पन्न होता है और प्रत्येक बाद के संकलन पर विधानसभा को अद्यतन किया जाता है।
यहाँ .NET असेंबली, एक मिनी-उद्धरण का एक और स्पष्टीकरण दिया गया है:
.NET फ्रेमवर्क में मॉड्यूल, असेंबली की अवधारणाएं होती हैं, जो मेटाडेटा और प्रकट जानकारी दोनों को संग्रहीत करती हैं। एक विधानसभा में कई मॉड्यूल हो सकते हैं। विजुअल C # केवल कभी एक मॉड्यूल बनाता है जिसे C # कंपाइलर (csc.exe) द्वारा असेंबली में बदल दिया जाता है, लेकिन असेंबली लिंकर (al.exe) कमांड-लाइन टूल के माध्यम से एक असेंबली कई .NET मॉड्यूल को एक साथ लिंक कर सकती है। उदाहरण के लिए आपके प्रत्येक स्रोत कोड .cs फाइलें एक मॉड्यूल में संकलित की जा सकती हैं और एक साथ मिलकर एक असेंबली बनाई जा सकती हैं - एक असेंबली सिर्फ मॉड्यूल और संसाधनों का एक संग्रह है। हालांकि, इनमें से एक मॉड्यूल; सीएलआर द्वारा समझी जाने वाली विधानसभा के लिए प्रकट मेटाडेटा (नीचे देखें) जानकारी होनी चाहिए।
....
एक नया .exe या .dll अंदर VS.NET बनाने के बाद आप अपनी फ़ाइल को अपने बिन फ़ोल्डर के अंदर दिखाई देते हैं। नोटपैड में इसे खोलने से फ़ाइल की संरचना को जाने बिना गीबर्किश, या यहां तक कि एक हेक्साडेसिमल संपादक के अंदर भी मिल जाएगा, आपको इसका अर्थ निकालने के लिए ildasm.exe या CFF एक्सप्लोरर जैसे उपकरण की आवश्यकता है। विधानसभा की संरचना इस प्रकार है:पीई हेडर
सीएलआर हेडर
सीएलआर मेटाडेटा
सीएलआर
आईएल कोड
नेटिव डेटा
जवाब तत्काल लोभी करने के लिए है।
सीधे शब्दों में कहें, यह संकलित परियोजना है जिसमें आपकी कक्षाएं और अतिरिक्त फाइलें शामिल हैं, यदि हैं। यही है, एक समाधान में प्रत्येक परियोजना विधानसभा है ।
या अधिक से अधिक,
एक असेंबली वह जगह है जहां एक प्रकार मांसल प्रणाली में संग्रहीत किया जाता है। कोड कोड करने के लिए असेंबली एक तंत्र है। उदाहरण के लिए,
System.Data.dll
विधानसभा में डेटा के प्रबंधन के लिए प्रकार होते हैं। अन्य विधानसभाओं में प्रकारों का उपयोग करने के लिए, उन्हें संदर्भित किया जाना चाहिए। - स्रोत
हम इसे कैसे जानते हैं? यदि आप समाधान के तहत किसी परियोजना के गुणों को देखते हैं तो आप निम्नलिखित चित्र देख सकते हैं।
जब आप प्रोजेक्ट संकलित करते हैं, तो यह DLL या EXE के लिए निकलता है ।
जब एक स्रोत कोड भाषा संकलक द्वारा संकलित किया जाता है तो यह एक प्रबंधित विधानसभा और MSIL (MisroSoft मध्यवर्ती भाषा) उत्पन्न करता है । उस असेंबली में .dll या .exe फ़ाइल होती है । एक Assebmly दो प्रकार की हो सकती है निजी असेंबली और साझा असेंबली , साझा असेंबली को GAC (वैश्विक असेंबली कैश) में संग्रहीत किया जाता है, ताकि कोई भी एप्लिकेशन इसे संदर्भित कर सके, जबकि निजी असेंबली को एप्लिकेशन फ़ोल्डर में संग्रहीत किया जाता है, जिसका उपयोग केवल एक अनुप्रयोग द्वारा किया जा सकता है।
एक असेंबली एक DLL या एक EXE है जो आपके द्वारा प्रकाशित करने पर या आपके एप्लिकेशन को संकलित करने पर बनाई जाएगी।
एक विधानसभा तार्किक इकाइयों का एक संग्रह है। तार्किक इकाइयाँ उन प्रकारों और संसाधनों को संदर्भित करती हैं जो किसी अनुप्रयोग को बनाने और उन्हें .Net ढांचे का उपयोग करके तैनात करने के लिए आवश्यक होते हैं। मूलतः, असेंबली Exe और DLL का एक संग्रह है। यह पोर्टेबल और निष्पादन योग्य है।
आपके प्रोग्राम (प्रोजेक्ट) का सोर्स कोड लिखने के बाद फिर एक फाइल बनाई जाती है जो DLL हो सकती है या EXE आपके प्रोजेक्ट पर निर्भर करती है। यह एक ही परियोजना के लिए केवल एक बार बनाता है। इसके दो प्रकार हैं 1: - एकल 2: - साझा या मल्टीप्रोग्राम सिंगल असेंबली का उपयोग केवल एक ही प्रोग्राम में किया जाता है जबकि साझा मल्टीग्राम के लिए इस्तेमाल किया जा सकता है