2013-03-05 6 views
5

प्रकाशित करने मैं एक अजीब मुद्दाडीबग परिभाषित जब

#if (!DEBUG) 
    checkLicense(); 
#endif 

यह दोनों Release और Debug विन्यास में सही ढंग से काम कर रहा है। लेकिन जब मैं रिलीज कॉन्फ़िगरेशन का उपयोग करके प्रकाशित करने का प्रयास करता हूं तो यह स्थिति निष्पादित नहीं होती है। ऐसा लगता है कि प्रकाशन डीबग डीएलएल का उपयोग कर रहा है।

मुझे क्या याद आया?

+0

आप क्यों कर रहे हैं एक के बजाय डीबग रिहाई पर एक सच्चे शर्त पर शर्त नहीं? –

उत्तर

0

सबसे पहले आपको यह सुनिश्चित करना होगा कि आप इस "अगर" में कदम उठाएं और कोशिश करें \ पकड़ लें।

#if (!DEBUG) 
MessageBox.Show("I'm in"); 
try{ 
    checkLicense();} 
catch{MessageBox.Show("ERROR IN checkLicense");} 
#endif 

और एक संस्करण लेने और चलाने के बजाए। यदि आप "अगर" में हैं, तो आप इसे जानेंगे और यदि आपके पास अपवाद है, तो आप इसे भी जानेंगे।

तुम भी

#if DEBUG 
.... 
#else 
..... 
+0

मुझे यकीन है कि मैं इसे –

+5

पर क्यों पोस्ट करता हूं शायद एक asp.net ऐप के साथ 'MessageBox.Show' का उपयोग नहीं करना चाहता ... –

+0

यदि उसकी परियोजना सेटिंग्स में' परिभाषित DEBUG निरंतर 'विकल्प चेक नहीं किया गया है रिलीज मोड के लिए, तो मुझे लगता है कि पूरा कथन संकलन समय पर हटा दिया जाएगा और कुछ भी नहीं होगा - यहां तक ​​कि अन्य खंड के साथ भी। –

3

कोशिश कर सकते हैं वहाँ एक सेटिंग है कि क्या डीबग लगातार विभिन्न तैनाती मोड के आधार पर प्रत्येक परियोजना के लिए परिभाषित किया गया है को नियंत्रित करने के लिए है। See this answer यह सत्यापित करने के लिए कि Define DEBUG constant चेकबॉक्स चेक किया गया है, यह सुनिश्चित करके निरंतर 'रिलीज़ मोड' के लिए परिभाषित किया जा रहा है।

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

यदि वह काम नहीं करता है, फिर एक और संभावना है मशीन आप अपने रिलीज कोड चला रहे हैं हो सकता है कि अपनी deployment element साथ machine.config:

<deployment retail="true" /> 

यह तत्व ओवरराइड करता है के लिए web.config सेटिंग आपके एप्लिकेशन और मशीन पर सभी .NET अनुप्रयोगों के लिए डीबग ध्वज को गलत पर सेट करता है।

तो यदि संभव हो, तो जांचें। हालांकि मुझे लगता है कि मैंने आपको दिया पहला विकल्प बहुत अधिक संभावना है।

+0

प्रतिक्रिया के लिए धन्यवाद। हाँ रिलीज में चेकबॉक्स अनचेक है। तो ऑपरेटर का उपयोग कर भी मेरा कोड हटा दिया जाएगा? (! डीबग)। –

+0

मुझे विश्वास है, बॉक्स की जांच करने, प्रोजेक्ट कॉन्फ़िगरेशन को सहेजने और फिर से अपने एप्लिकेशन को तैनात करने का प्रयास करें। –

+0

कोई गलत नहीं है। अगर मैं रिलीज मोड में डीबीयूजी निरंतर परिभाषित करता हूं तो मुझे अपनी स्थिति रिलीज में सच होती है ( –

0

मेरे अन्य उत्तर के लिए वैकल्पिक क्योंकि मैंने अभी एमवीसी टैग देखा है, जबकि मुझे लगता है कि आप वेबफॉर्म का उपयोग कर रहे थे।

क्या कोड स्निपेट आपको किसी भी अवसर से प्रदान किया गया है?

क्योंकि यदि ऐसा है, तो रनटाइम पर दृश्य उत्पन्न होने पर आपकी परियोजना के लिए DEBUG सेटिंग का सम्मान नहीं किया जा रहा है - यह केवल आपके web.config फ़ाइल में डीबग ध्वज का सम्मान करेगा।

See this answer for more information.

+0

इसकी नियंत्रक विधि में –

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