मुझे एक सी # असेंबली मिली है जिसे मैं डेल्फी (win32 देशी) एप्लिकेशन से COM के माध्यम से आमंत्रित कर रहा हूं।regasm.exe गलत सीआईडी के साथ मेरी सी # असेंबली क्यों पंजीकृत करता है?
यह उन सभी मशीनों पर काम करता है जिन्हें मैंने परीक्षण किया है, एक को छोड़कर।
समस्या यह है कि COM ऑब्जेक्ट बनाने की कोशिश करते समय डेल्फी एप्लिकेशन "क्लास पंजीकृत नहीं" हो जाता है।
अब, जब मैं HKEY_CLASSES_ROOT\DelphiToCSharp\CLSID
के तहत रजिस्ट्री में देखता हूं, तो सूचीबद्ध सूचीबद्ध GUID AssemblyInfo.cs में असेंबली ग्रिड जैसा नहीं है। यह वही होना चाहिए - यह अन्य सभी कंप्यूटरों पर समान है जहां यह स्थापित है।
मैंने regasm /unregister delphitocsharp.dll
को आजमाया है, और यह रजिस्ट्री कुंजी को हटा देता है। फिर यदि मैं regasm delphitocsharp.dll
करता हूं, तो रजिस्ट्री कुंजी लौटाती है, लेकिन GUID पहले (यानी गलत) जैसा ही है, और डेल्फी को अभी भी "क्लास पंजीकृत नहीं है" मिलता है।
कार्य मशीन पर DelphiToCSharp.dll गैर-काम करने वाली मशीन पर संस्करण के समान (एमडी 5 के साथ सत्यापित) समान है।
मैं सोच सकता हूं कि डीएलएल का पुराना संस्करण पहले पंजीकृत था, और वहां अभी भी उस फ़ाइल के कुछ अवशेष मौजूद हैं जो भ्रमित हो रहा है।
मैं इस मुद्दे को कैसे ठीक या निदान कर सकता हूं?
यह जीएसी में नहीं हो सकता है, क्योंकि मेरी असेंबली पर हस्ताक्षर नहीं है। अच्छा बिंदु हालांकि, मैं फ़ाइल की अन्य प्रतियों की खोज करूंगा। – Blorgbeard
.Net की असेंबली लोडिंग Win32 के रूप में कई निर्देशिकाओं में डीएल का पता नहीं लगाती है, इसलिए शायद ही मामला हो सकता है। –