2008-10-02 11 views
33

हमारे पास एक बड़ा सी # (.net 2.0) ऐप है जो हमारे स्वयं के सी ++ COM घटक का उपयोग करता है और एक तृतीय पक्ष फिंगरप्रिंट स्कैनर लाइब्रेरी भी COM के माध्यम से उपयोग किया जाता है। हम एक ऐसे मुद्दे में भाग गए जहां उत्पादन में फिंगरप्रिंट लाइब्रेरी से कुछ घटनाओं को सी # ऐप में नहीं निकाल दिया गया, हालांकि हमारे अपने सी ++ COM घटक से घटनाएं निकाल दी गईं और उन्हें ठीक से प्राप्त किया गया।stdole.dll क्या करता है?

एक असफल प्रणाली पर काम करने वाले सिस्टम पर लोड किए गए मॉड्यूल की तुलना करने के लिए एमएसआईएनएफओ 32 का उपयोग करके हमने यह निर्धारित किया कि यह एसटीडीओएलई.एलएलएल जीएसी में नहीं है और इसलिए दोषपूर्ण प्रक्रिया में लोड नहीं हुआ है।

इस फ़ाइल को जीएसी में खींचने से घटनाएं फिंगरप्रिंट COM लाइब्रेरी से ठीक वापस आती हैं।

तो stdole.dll क्या करता है? यह आकार में 16k है इसलिए यह ज्यादा नहीं हो सकता है ... क्या यह किसी अन्य लाइब्रेरी जैसे STDOLE32 से लिंक है? इसकी अनुपस्थिति कैसे इस तरह के अजीब व्यवहार का कारण बनती है?

हम stdole.dll को कैसे वितरित करते हैं? यह एक एक्सकॉपी तैनाती ऐप है और हम जीएसी का उपयोग नहीं करते हैं। क्या हमें इसे संसाधन के रूप में पैकेज करना चाहिए और सिस्टम का उपयोग करना चाहिए। एंटरप्राइज सर्विसेज। आंतरिक। प्रकाशित करें। GacInstall यह सुनिश्चित करने के लिए कि यह जीएसी में है?

उत्तर

20

ऐसा लगता है कि stdole.dll प्राथमिक इंटरऑप असेंबली है। Office 2003 Primary Interop Assemblies on MSDN.

+0

हाँ मैं पिया निर्देशिका में एक प्रति के रूप में अच्छी तरह से मिल गया।हमारा ऐप कार्यालय घटकों का उपयोग नहीं करता है; और यह अभी भी हम जो व्यवहार देख रहे हैं उसे समझा नहीं है! –

+2

यह "मानक" COM इंटरफ़ेस जैसे IFont या IDispatch का उपयोग कर सकता है। .NET में इन इंटरफेस के लिए समर्थन लगता है stdole.dll को reff करने की आवश्यकता है। मैं उलझन में हूं कि यह असेंबली कार्यालय से जुड़ी हुई है। – Aardvark

0

मुझे स्टडोल के लिए मेरी परियोजना का संदर्भ भी जोड़ना पड़ा। भले ही मेरे पास इसका कोई संदर्भ न हो (यह एक साधारण छवि ऐप है), हमारे उपयोगकर्ताओं में से 2 को त्रुटियां मिल रही थीं कि यह गायब थी। ऐसा हो सकता है कि वे केवल .NET 2.0 चला रहे थे जब यह 3.5 ऐप है। मैंने पता लगाया क्यों।

मैं प्रोजेक्ट प्रॉपर्टी टैब पर प्रकाशित करने के लिए भी गया, और चयनित एप्लीकेशन फाइलें, फिर तैनात किए जाने वाले स्टडोल को शामिल किया गया। उम्मीद है कि काम करेगा।

+2

यह काम कर सकता है, लेकिन stdole.dll एक पुनर्वितरण योग्य फ़ाइल नहीं है और इसके अनुसार मौजूदा इंस्टॉलेशन को तोड़ सकता है ... (stdole के लिए खोज) http://msdn.microsoft.com/en-us/library/aa195478(ऑफिस। 11) .aspx –

1

मुझे एक ही समस्या थी। मैंने अभी एप्लिकेशन से संदर्भ हटा दिया है और पुनः संकलित किया है। पारित सभी परीक्षणों को पूरा करें। फिर डीएलएल के बिना फिर से तैनात किया गया और यह सब काम किया।

मुझे नहीं पता कि इस परियोजना में पहली बार इसका संदर्भ कैसे मिला। यह एक विरासत ऐप है जो बहुत समय पहले होना चाहिए था।

साइमन

0

हमारी परियोजना IDispatch stdole.dll का उपयोग कर couses में। हमने इसे ऑब्जेक्ट को ऑब्जेक्ट करने और निकालने के लिए बदल दिया है, फिर संदर्भों से स्टडोल हटा दें।

1

यह समस्या भी यहाँ पर चर्चा की है: Why is Visual Studio 2015 adding stdole.dll and Microsoft.AnalysisServices.AdomdClient.dll to my project?

वी.एस. 2015 तक एक पुराने परियोजना अपग्रेड करना क्या वजह से stdole.dll इस मामले में परियोजना में शामिल हो रही शुरू करने के लिए कर रहा है।

यदि पुस्तकालय संदर्भ में प्रस्तावों में "एम्बेड इंटरप प्रकार" का विकल्प होता है, तो इसे प्राथमिकता दी जाती है और इसके बाद stdole.dll की आवश्यकता नहीं हो सकती है। संदर्भ के गुणों में बस Embed Interop Types=true सेट करें।

पुस्तकालय जो इसमें अनुमति देते हैं, एमएस ऑफिस पुस्तकालयों जैसे कार्यालय, एक्सेल, कोर शामिल हैं। एक का उदाहरण है जो क्रिस्टल रिपोर्ट नहीं है।

Hans Passantदृढ़ता से हतोत्साहित यहाँ Embed Interop Types=false की स्थापना: What's the difference setting Embed Interop Types true and false in Visual Studio?

संबंधित मुद्दे