जब आप वीबी 6 में कोड लिखेंगे, संकलित परिणाम एक COM घटक होगा। COM घटक इंटरफेस, कोक्लास, structs और enums प्रदान करते हैं, जिन्हें आमतौर पर COM प्रकार लाइब्रेरी का उपयोग करके वर्णित किया जाता है। हालांकि, .NET में उस COM घटक का उपभोग करने के लिए, आपको उस प्रारूप में टाइप विवरण की आवश्यकता है जो .NET समझता है - यानी .NET असेंबली (क्योंकि यह सीधे प्रकार के पुस्तकालयों के साथ काम नहीं कर सकता)। इसलिए एक इंटरऑप असेंबली सिर्फ एक "रूपांतरित" COM प्रकार लाइब्रेरी है, इस अर्थ में कि इसमें इंटरफ़ेस, structs इत्यादि का विवरण शामिल है जो एक प्रकार की लाइब्रेरी में समान चीजों से मेल खाते हैं।
(ऊपर कुछ हद तक सरल है, के रूप में इंटरॉप विधानसभा नहीं है एक प्रकार लायब्रेरी से उत्पादन किया जा के लिए करता है - आप हाथ से कोड कर सकते हैं एक अगर आप चाहते हैं, उदाहरण के लिए।)
है क्या के विपरीत अक्सर कहा जाता है, एक इंटरऑप असेंबली में कोई निष्पादन योग्य कोड नहीं होता है, और यह कोई मार्शलिंग नहीं करता है। इसमें केवल प्रकार की परिभाषाएं होती हैं, और एकमात्र जगह जहां विधियां हो सकती हैं इंटरफेस में होती है, और इंटरफेस में विधियों में कार्यान्वयन नहीं होता है। मार्शलिंग .NET को COM लोगों को कॉल वास्तव में सीएलआर द्वारा इंटरऑप असेंबली से लोड किए गए प्रकार के विवरणों के आधार पर किया जाता है - यह फ्लाई पर सभी आवश्यक कोड उत्पन्न करता है।
अब आपके प्रश्न के अनुसार। आपको अपने COM DLL (आपके VB6 का आउटपुट) प्रोजेक्ट पंजीकृत करना होगा - उदाहरण के लिए, regsvr32.exe
का उपयोग करना। आपको वास्तव में एक इंटरऑप असेंबली पंजीकृत नहीं करना चाहिए, क्योंकि यह COM घटक नहीं है - यह सिर्फ एक सादा .NET असेंबली है, इसलिए आप इसे अपने .exe/.dll के साथ उसी फ़ोल्डर में डाल सकते हैं। , या सामान्य रूप से इसे जीएसी में डाल दें।
स्रोत
2009-11-04 00:12:07
+1 मुझे लगता है कि यह एक अच्छा सवाल था, भले ही कोई और आपके लिए मतदान न करे। :) – Dusty