लोड करने में विफल रहता है मुझे कई वीसी ++ डीएलएल के साथ समस्या है, जिसे मुझे अपने .NET/C# प्रोजेक्ट में शामिल करना चाहिए। एक वीसी ++ डीएलएल एक सी ++/सीएलआई डीएलएल है, जिसे मैं अपने .NET प्रोजेक्ट से सार्वजनिक इंटरफ़ेस के रूप में उपयोग करता हूं। अन्य डीएलएल देशी सी ++ में लिखे गए हैं। मेरे पास वीसी ++ डीएलएल के स्रोत तक कोई पहुंच नहीं है, मुझे बस उनका उपयोग करना होगा।WinSxS वीसी ++ डीएलएल
मैंने एक .NET परीक्षण प्रोजेक्ट बनाया है और सी ++/सीएलआई डीएलएल का संदर्भ दिया है। कोई समस्या नहीं, संकलक भाग्यशाली, महान है। केवल एक समस्या है: जब मैं .NET प्रोग्राम का EXE प्रारंभ करता हूं, तो मुझे वीसी ++ कोर डीएलएल गायब होने की वजह से सी ++ डीएलएल के बारे में त्रुटियां मिलती हैं।
INFO: Reference: Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
INFO: Reference: Microsoft.VC80.OpenMP,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
INFO: Resolving reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
...
ERROR: Cannot resolve reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195".
अब मैं कोई मूर्ख हूँ और कई चीजें करने की कोशिश की: sxstrace निम्नलिखित (छोटा) दिखाता है। मैंने क्या चल रहा है इसके बारे में गहरी समझ प्राप्त करने के लिए WinSxS के बारे में बहुत कुछ पढ़ा है। अब मैं उस बिंदु पर हूं, जहां यह मेरे लिए कमजोर हो रहा है। सिस्टम जहां मैं प्रोग्राम को निष्पादित करना चाहता हूं, वर्तमान संस्करण 8.0.50727.762 (SP1) में VC++ पुनर्वितरण योग्य पैकेज स्थापित है। मुझे पता है कि winsxs में Microsoft.VC80.CRT के लिए एक नीति फ़ाइल है जो इस असेंबली के सभी संस्करणों को वर्तमान संस्करण 8.0.50727.762 पर रीडायरेक्ट करती है (यह समस्या http://blogs.msdn.com/b/nikolad/archive/2007/03/29/a-solution-to-two-references-to-different-versions-of-crt-mfc-atl-in-one-application-manifest-file.aspx पर समस्या का समाधान है)। लेकिन ऊपर की त्रुटि के अनुसार, यह नीति फ़ाइल काम नहीं कर रही है या खाते में नहीं लिया गया है। सिस्टम सिर्फ असेंबली के 8.0.50727.6195 संस्करण को ढूंढना चाहता है।
अब यह पहला सवाल है: यहां समस्या क्या है? मुझे यह पता चला कि, मैं प्रारंभिक समस्या को हल कर सकता हूं ...
संस्करण बेमेल क्रिस्टल संदेश में स्पष्ट है। यह 8.0.50727.6195 चाहता है, आपको 8.0.50727.762 मिल गया है। Search.microsoft.com पर जाएं और खोज बॉक्स में "8.0.50727.6195" डालें। –
सवाल यह है कि एप्लिकेशन को 6195 के बजाय 762 स्वीकार करने के लिए "राजी" करना संभव है। – Dialecticus
मुझे इस मामले में माइक्रोसॉफ्ट द्वारा संस्करण के बारे में अनिश्चितता है। मुझे माइक्रोसॉफ्ट डाउनलोड पर संस्करण 8.0.50727.6195 के साथ वीसी ++ 2005 रेडिस्ट पैकेज नहीं मिला, वर्तमान वीसी ++ 2005 रेडिस्ट पैकेज संस्करण 8.0.50727.762 में आता है। यदि 762 6195 से अधिक संस्करण के अनुसार है, तो यह लिखा जाना चाहिए: WinSxS नीति फ़ाइल को 6195 से 762 पर रीडायरेक्ट करना चाहिए - लेकिन ऐसा नहीं है। – Matthias