मेरे पास एक .NET DLL है (जो सी ++/सीएलआई में लिखा जाता है)। इसके कुछ हिस्सों मैं COM के माध्यम से बेनकाब करना चाहता हूँ। मैं ऐसा करता हूं और इसे "regasm my.dll/codebase" का उपयोग करके पंजीकृत करता हूं। अब तक सब ठीक है। लेकिन फिर मैं कुछ चीजें और असेंबली परिवर्तनों की संस्करण संख्या बदलता हूं और साथ ही मैं डीएल को एक अलग फ़ोल्डर में ले जाता हूं। मैं इसे फिर से पंजीकृत करता हूं और ओएलई/कॉम व्यूअर में मेरी COM ऑब्जेक्ट को देखता हूं। मैं इस तरहRegasm के माध्यम से पंजीकृत कई संस्करणों के साथ .NET/COM कैसे काम करता है?
InprocServer32 [Codebase] = file://c://foo/bar/my.dll 7.0.0.0 [Class] = My.Blah.Class 7.0.0.0 [Assembly] = Sync, Version=7.0.0.0, Culture=neutral, PublicKeyToken=1dd19234234 7.0.0.0 [RuntimeVersion] = v2.0.50727 7.0.0.0 [CodeBase] = file://c:/dooby/do/my.dll 7.0.0.27397 [Class] = My.Blah.Class 7.0.0.27397 [Assembly] = Sync, Version=7.0.0.27397, Culture=neutral, PublicKeyToken=1dd19234234 7.0.0.27397 [RuntimeVersion] = v2.0.50727 7.0.0.27397 [CodeBase] = file://c://foo/bar/my.dll
एकाधिक संस्करणों के बारे में प्रश्न कुछ देखें:
तो मुझे लगता है कि पिछले कॉम उद्देश्य यह है कि पंजीकृत किया गया था जीत। इससे कोई फर्क नहीं पड़ता कि मेरे पास मेरी पुरानी 7.0.0.0 COM ऑब्जेक्ट पंजीकृत है, 7.0.0.27397 वह है जिसे बनाया जाएगा जब मैं अपने COM ऑब्जेक्ट को तुरंत चालू करता हूं क्योंकि मैंने इसे अंतिम बार पंजीकृत किया था। क्या वो सही है?
ओह, मैंने 7.0.0.0 ऑब्जेक्ट को नहीं रखा था। क्या इससे छुटकारा पाने का कोई तरीका है? रजिस्ट्री में जाने और इसे हाथ से मारने के अलावा किसी COM ऑब्जेक्ट के सभी संस्करणों को हटाने का कोई तरीका है?
जिज्ञासा से बाहर, अगर मैं विशेष रूप से अपने COM ऑब्जेक्ट के किसी विशेष संस्करण को तुरंत चालू करना चाहता हूं तो ऐसा करने का कोई तरीका है? (यदि आप कोड उदाहरण देना चाहते हैं तो मैं सी ++ का उपयोग कर रहा हूं)।
क्या कोई तरीका है कि मैं केवल संस्करण संख्या को स्टोर न करने के लिए विनियम कह सकता हूं क्योंकि यह चीजों को अव्यवस्थित करने लगता है और मैं नहीं देख सकता कि लाभ क्या है। यदि मेरा COM ऑब्जेक्ट महत्वपूर्ण एपीआई परिवर्तन के माध्यम से चला गया तो मैं सिर्फ GUID और प्रोगिड को बदल दूंगा, है ना? क्या होगा यदि मैं एकाधिक संस्करणों को पंजीकृत नहीं करना चाहता (मुझे नहीं)।
मुझे सबूत देख रहे हैं कि COM हमेशा कई संस्करणों के साथ पंजीकृत घटक के उच्चतम क्रमांकित संस्करण को उठाता है, अंतिम पंजीकृत संस्करण नहीं। क्या कोई इसकी पुष्टि कर सकता है? – BlueMonkMN