2009-06-19 19 views
18

प्लेस ThisDocument_Startup के बाहर एक वर्ड दस्तावेज़ स्तर VSTO समाधान में कहीं इस कोड (एक क्लिक करें घटना के साथ, एक रिबन बटन बनाने):वर्ड वीएसटीओ डिबगिंग के बिना रनटाइम पर अपवाद निगलता है?

int zero = 0; 
int divideByZero = 10/zero; 

प्रारंभ डिबगिंग (Ctrl + F5) के बिना, परिणाम: अपवाद निगल लिया है, शेष कोड चुपचाप विफल रहता है।

अपवाद दिखाई देगा यदि यहDocument_Startup में रखा गया है, लेकिन यह कहीं और दिखाई नहीं देता है। माइक्रोसॉफ्ट के वीएसटीओ मंच और एमएसडीएन दस्तावेज को लगता है कि कोशिश करें ... पकड़ का उपयोग किया जाना चाहिए - जो ज्ञात अज्ञातों के लिए एक बड़ा सौदा नहीं है। अज्ञात अज्ञात के बारे में क्या?

सभी प्रबंधित कोड के लिए बिना क्रिया अपवाद के साथ काम कर के आम तरीके से काम करने के, VSTO की वजह से शायद कार्यालय कॉम Interops साथ कोड कामयाब का उपयोग कर नहीं लग रहे:

//These don't work 
AppDomain.CurrentDomain.UnhandledException ... 
System.Windows.Forms.Application.ThreadException ... 

मैं समस्या निवारण VSTO के बारे में पोस्ट पढ़ा है कोड जो हमेशा रखने की कोशिश करता है कोशिश करें ... व्यावहारिक रूप से सबकुछ पकड़ो!

ज्ञात और अज्ञात (अब अदृश्य और चुप!) विफलताओं को संभालने का कोई बेहतर तरीका है?

+0

चलाकर शुरू करें नहीं है सावधान रहें, शब्द ऐड-इन को अक्षम करने का भी प्रयास करेगा जो अपवाद फेंकता है;) – Tangocoder

उत्तर

10

दरअसल यह काफी आसान है, कार्यालय अनुप्रयोग चलाने से पहले पर्यावरणीय परिवर्तनीय VSTO_SUPPRESSDISPLAYALERTS को 0 पर सेट करें, तो कार्यालय अपवाद प्रदर्शित करेगा और समस्या होने पर स्टार्टअप के दौरान आपके ऐड-इन को मार नहीं देगा।

वहाँ भी एक उपयोगी powershell स्क्रिप्ट जो आप के लिए सामान की इस तरह करते हैं और काम है जाएगा जब पता लगाना जब VSTO http://archive.msdn.microsoft.com/vstotroubleshooter पर काम कर रहे vstotroubleshooter.ps1 setdbg जो होगा सेटअप आपके लिए VSTO_SUPPRESSDISPLAYALERTS env चर

+1

http://archive.msdn.microsoft.com/vstotroubleshooter लिंक काम नहीं करता है। यह कहता है "पुरालेख गैलरी सेवानिवृत्त हो गया है।" – N30

0

मैं एक ************** अपवाद पाठ ************** System.DivideByZeroException प्राप्त कर सकते हैं: शून्य से विभाजित करने का प्रयास किया।

ऐप लेवल एडिन प्रोजेक्ट के साथ।

क्या आप इसे केवल डॉक्टर स्तर अनुकूलन परियोजनाओं के साथ देख रहे हैं? एक्सेल में भी यह शब्द में भी है या यह भी हो रहा है?

+0

मैं अपने अपर्याप्तता के लिए क्षमा चाहता हूं - हाँ, केवल शब्द में दस्तावेज़ स्तर परियोजनाओं के लिए। –

2

मुझे लगता है कि समस्या केवल लगभग अपवाद के लिए अलग है "ऐड-इन यूजर इंटरफेस" - जो (वर्ड 2007) एक सीधा सेटिंग यहां पाया जा करने के लिए होता है:

वर्ड विकल्प> उन्नत> सामान्य> "दिखाएँ ऐड-इन यूजर इंटरफेस त्रुटियों "

+0

क्या आप जानते हैं कि Word 2003 के लिए समकक्ष विकल्प है या नहीं? मैं एक एमएस वर्ड अनुप्रयोग स्तर VSTO ऐड-इन में काम कर रहे उचित अपवाद हैंडलिंग प्राप्त करने के लिए संघर्ष कर रहा हूं। मैंने आपके प्रश्न के अनुसार अपवाद हैंडलर जोड़े हैं लेकिन वे कभी भी ट्रिगर नहीं करते हैं ... –

+0

मुझे 2003 में एक के बारे में पता नहीं है। Office 2007 में हमारे वीएसटीओ अनुप्रयोगों के लिए, हमें सावधानीपूर्वक प्रयास करना होगा ... सब कुछ पकड़ो अज्ञात अपवादों के लिए लॉगिंग और सुरक्षित आंसू के साथ। –

+0

धन्यवाद माइक। मुझे लगता है कि आपका प्रश्न डॉक्टर स्तर एड-इन्स के बारे में था। क्या आपने कोई ऐप लेवल ऐड-इन्स किया है और क्या आपने वीएसटीओ एप्लीकेशन लेवल ऐड-इन्स के लिए काम कर रहे वैश्विक त्रुटि हैंडलर प्रबंधित करने का प्रबंधन किया है, या क्या आपको उनके लिए सब कुछ चारों ओर रखने/पकड़ने की ज़रूरत है? –

0

मुझे वर्ड में एप्लिकेशन-स्तरीय एड-इन के साथ एक ही समस्या थी।

आप F5 के साथ दृश्य स्टूडियो से शुरू करके अपने ऐड-इन चला रहे हैं, तो आप हमेशा "उपयोगकर्ता कोड से बिना क्रिया" वी.एस. (जैसे 2008 SP1) में मिल जाएगा, जब तक:

  • सीएलआर अपवादों के लिए दृश्य अप स्टूडियो सेटिंग "ब्रेक अप अपवाद .. उपयोगकर्ता-अनचाहे" को अनचेक करें, या

  • आप उदारतापूर्वक [System.Diagnostics.DebuggerNonUserCodeAttribute()] एनोटेशन लागू करते हैं।

एक बार जब आप इनमें से एक कर चुके हैं, तो अनचाहे अपवाद/थ्रेडएक्सप्शन काम करने लगते हैं।

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