2010-08-20 16 views
51

वास्तव में वीएस परियोजना विकल्प "COM इंटरऑप के लिए रजिस्टर" वास्तव में क्या करता है? क्योंकि जब मैं इस विकल्प के साथ अपनी लाइब्रेरी का निर्माण करता हूं तो मैं वीबीस्क्रिप्ट से अपनी लाइब्रेरी पर CreateObject को कॉल कर सकता हूं। लेकिन अगर मैं इसके बिना निर्माण करता हूं और फिर मैन्युअल रूप से regomasm चलाता हूं CreateObject विफल रहता है। तो मैं सोच रहा हूं - वीएस -2010 क्या करता है कि मैं नहीं कर रहा हूं?वास्तव में "COM इंटरऑप के लिए रजिस्टर" क्या करता है?

उत्तर

50

यह/tlb और/codebase विकल्पों के साथ Regasm.exe चलाने जैसा ही काम करता है।/कोडबेस विकल्प शायद वह भूल गया है जिसे आप भूल गए हैं। मान लीजिए कि आप डीएलएल को जीएसी में डालते हैं और जब आप नहीं करते हैं तो चेतावनी उत्पन्न करते हैं। डीएलएल नरक, हमेशा एक COM समस्या से बचने के लिए जीएसी वास्तव में एक बहुत अच्छा तरीका है। लेकिन आपकी देव मशीन पर उचित नहीं है, आप कोड को विकसित और परीक्षण करते समय जीएसी को प्रदूषित नहीं करना चाहते हैं। यह केवल आपके उपयोगकर्ता की मशीन पर महत्वपूर्ण है, वह एक जो कई संस्करणों के संपर्क में आने की संभावना है।

64-बिट मशीन पर Regasm.exe के गलत संस्करण का उपयोग करना परेशानी पाने का एक और तरीका है, आमतौर पर आपकी मशीन पर 4 संस्करण होते हैं। 32-बिट और 64-बिट संस्करणों (सी: \ विंडोज \ माइक्रोसॉफ्ट \ फ्रेमवर्क बनाम फ्रेमवर्क 64) को अलग करना सुनिश्चित करें, वे अलग-अलग रजिस्ट्री कुंजियां लिखते हैं। आप क्लाइंट ऐप के साथ संगत एक चुनना चाहते हैं। दोनों का उपयोग ठीक है, .NET कोड किसी भी मोड में चलाया जा सकता है, लेकिन बहुत असामान्य है। और v2.0.50727 (.NET 2.0 से 3.5SP1) और v4.0 संस्करणों के बीच अंतर करें। सही स्टिक स्टूडियो कमांड प्रॉम्प्ट चुनना आधा युद्ध है।

+3

धन्यवाद! मैं/कोडबेस विकल्प का उपयोग कर रहा था लेकिन यह स्पष्ट रूप से 32 बिट संस्करण के बजाय 64 बिट का उपयोग कर रहा था। स्पष्ट रूप से 32 बिट संस्करण का इस्तेमाल किया और एक आकर्षण की तरह काम किया। – hackerhasid

+0

ध्यान दें कि दोनों संस्करणों का उपयोग स्वीकार्य है, .NET कोड किसी भी तरह से चला सकता है। –

संबंधित मुद्दे