का उपयोग करने के लिए .NET इंटरऑप फोर्स करें क्या इसके संबंधित COM DLL की स्थानीय प्रति को संदर्भित करने के लिए एक इंटरऑप असेंबली को मजबूर करना संभव है?स्थानीय COM DLL
मैं एक इंटरॉप विधानसभा (Interop.OTAClient.dll), जो एक COM DLL (OTAClient.dll, जिसके लिए स्वचालन एपीआई है के लिए इंटरॉप है का संदर्भ देता है एक .NET अनुप्रयोग है:
यहाँ परिदृश्य है एचपी गुणवत्ता केंद्र)। मैं COM पर बहुत जानकार नहीं हूं, लेकिन जैसा कि मैं समझता हूं कि इंटरऑप असेंबली एक विशिष्ट फ़ाइल को इंगित करने के बजाय रजिस्ट्री में GUID संदर्भों के माध्यम से COM कक्षाओं को देखती है।
मेरे पास यह मुद्दा है कि OTAClient.dll की प्रतिलिपि है कि रजिस्ट्री कुंजियों को विभिन्न संस्करणों द्वारा अधिलेखित किया जाता है, इस पर निर्भर करता है कि क्यूसी के किस संस्करण में मैंने अभी ब्राउज़र में लॉग इन किया है, और इन डीएलएल के विभिन्न संस्करण एक दूसरे के साथ संगत नहीं हैं। .NET ऐप केवल क्यूसी के विशिष्ट संस्करण से कनेक्ट होगा, इसलिए मेरे पास COM DLL इस तरह से भिन्न नहीं हो सकता है।
किसी भी सुझाव की बहुत सराहना की जाएगी, क्योंकि यह व्यवहार वास्तव में परेशान है। मैंने COM इंटरॉप मुद्दों पर अन्य प्रश्नों को देखा है, लेकिन वे सभी वास्तविक COM DLL से जुड़े इस विशेष परिदृश्य के बजाय, जीएसी में एक के बजाय इंटरऑप डीएलएल के स्थानीय संस्करण को मजबूर करने के बारे में प्रतीत होते हैं।
हाय पावेल। लिंक के लिए धन्यवाद - मैंने उदाहरण का पालन किया, और वीएस ने उम्मीद के अनुसार ओटीएक्लिएंट के लिए मैनिफेस्ट एंट्री उत्पन्न की।हालांकि, मैं अभी भी वही लक्षण देखता हूं यदि डीएलएल का नया संस्करण ब्राउज़र ऐप द्वारा आखिरी बार उपयोग किया गया है जो कि डीएलएल का भी उपयोग करता है। क्या आपको लगता है कि यह संभव है कि ओटीएक्लिएंट की अपनी निर्भरताएं हैं जो नए संस्करणों के साथ ओवरराइट हो रही हैं? यदि हां, तो इस पर कोई सुझाव है कि मैं इससे कैसे निपट सकता हूं? – Xiaofu
यह संभव हो सकता है यदि वे निर्भरता स्वयं COM घटक हैं। यदि ऐसा है, तो आपको उन्हें उसी तरह से संभालना चाहिए (ताकि आप पुस्तकालयों के एक आत्मनिर्भर सेट के साथ समाप्त हो जाएं)। –