मैं (ऐड-इन एक कॉम एक .NET के लिए शिम) एक Excel 2003 ऐड-इन से CLR का दृष्टांत के लिए निम्न अप्रबंधित सी ++ कोड का उपयोग कर रहा:.NET CLR के संस्करण को नियंत्रित करता है जो CorBindToRuntimeEx द्वारा लोड हो जाता है?
hr = CorBindToRuntimeEx(
0, // version, use default
0, // flavor, use default
0, // domain-neutral"ness" and gc settings
CLSID_CorRuntimeHost,
IID_ICorRuntimeHost,
(PVOID*) &m_pHost);
और मशीनों के विशाल बहुमत के लिए हमारे संगठन में (कुछ सौ) यह पूरी तरह से काम करता है, यहां तक कि कई सीएलआर संस्करणों के साथ भी स्थापित; हालांकि कुछ मशीनों के लिए सीएलआर का गलत (पुराना) संस्करण तत्काल है जो तब असेंबली लोड करने में विफल रहता है क्योंकि इसे .NET 2 रनटाइम की आवश्यकता होती है। पहली बार मैं प्रोसेस एक्सप्लोरर भाग गया और यह काफी समस्या मशीनों में से एक पर निम्नलिखित दिखा खुलासा था के लिए
कल:
process pid type Handle or DLL
------- --- ---- -------------
procexp.exe 5056 DLL c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorworks.dll
EXCEL.EXE 7180 DLL c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\mscorworks.dll
यानी एक्सेल भी कोई नया हालांकि क्रम के गलत संस्करण के लोड होते ही उपलब्ध है। अब मुझे पता लगाना क्यों है।
कुछ संभावनाओं जो मन में आते हैं:
- वहाँ विशिष्ट मशीन पर CLR इन्स्टेन्शियशन की 'प्राथमिकता' के साथ कुछ अजीब है, यहां तक कि एमएस डॉक्स (हालांकि http://msdn.microsoft.com /en-us/library/ms231419.aspx) यह इंगित करने के लिए प्रतीत होता है कि जब तक आप एक विशिष्ट संस्करण का अनुरोध नहीं करते हैं तब तक आप हमेशा नवीनतम प्राप्त करेंगे।
- एक्सेल में एक और ऐड-इन पहले ही (जानबूझकर) एक .NET 1 सीएलआर को तुरंत चालू कर चुका है और एक्सेल एक से अधिक होस्ट नहीं कर सकता है।
मुझे इनमें से दूसरे में दृढ़ता से संदेह है, लेकिन यह नहीं पता कि इसे कैसे साबित/ठीक किया जाए।
क्या किसी ने भी इसी तरह के व्यवहार को देखा है? क्या हो रहा है पर कोई सुझाव?
कुछ अन्य नोट्स:
- सभी वर्कस्टेशन Windows XP SP3 चला रहे हैं
- एक्सेल 2003 SP3 हमारे संगठन में Excel के केवल संस्करण
मैं दोनों में से किसी को नहीं बदल सकते है ये तो एक नया एक्सेल संस्करण एक विकल्प नहीं है।
ऐसा लगता है कि यह समस्या हो सकती है: http://support.microsoft.com/kb/948461 तो शायद प्रश्न में मशीन VSTO का पुराना संस्करण है। मैं यह स्थापित करने की कोशिश करूंगा कि यह समस्या है या नहीं। –
यह पता चला है कि मशीन * सही * VSTO स्थापित है, इसलिए समस्या नहीं है। इसलिए यह तेजी से लगता है कि यह उस क्रम में है जिसमें एक्सेल एड-इन्स को तुरंत चालू करता है, यानी कुछ पहले लोड किए गए ऐड-इन v1 CLR अनुरोध करते हैं। –