2009-11-14 2 views
34

में केवल डीबग मोड में कोड निष्पादित करने के लिए मेरे पास एक एएसपी.नेट वेब एप्लिकेशन है और मेरे पास कुछ कोड है जो मैं केवल डीबग संस्करण में निष्पादित करना चाहता हूं। यह कैसे करना है?एएसपी.NET

[Conditional("DEBUG")] 
void SomeMethod() 
{ 
} 

उत्तर

71
#if DEBUG 
your code 
#endif 

तुम भी ConditionalAttribute विधि है कि जब आप डिबग मोड में इसे बनाने केवल निष्पादित करने के लिए करने के लिए जोड़ सकते हैं किसी भी स्थिर वर्ग आप applicaition में है:

public static bool IsDebug 
    { 
     get 
     { 
      bool debug = false; 
#if DEBUG 
      debug = true; 
#endif 
      return debug; 
     } 
    } 

फिर अपनी इच्छा को प्राप्त करने के कार्य करें:

if (IsDebug) 
    { 
     //Your code 
    } 
    else 
    { 
     //not debug mode 
    } 
+0

यह कैसे जानता है कि यह डीबग में है, क्या यह इसे web.config से ले रहा है? – Omu

+1

@ ओमु: मैंने एमएसडीएन के लिंक को जोड़ा - यह बताता है कि कंपाइलर चुनिंदा रूप से 'सशर्त' चिह्नित विधियों को कॉल कैसे हटाता है। –

+1

आप रिलीज या डीबग के बीच बिल्ड मोड चुनते हैं। #if और सशर्त का उपयोग संकलन समय पर किया जाता है। कुछ और विवरण: http://bytes.com/topic/c-sharp/answers/237540- शर्त-debug-if-debug। आपको Google में बहुत सारी जानकारी मिल जाएगी। – empi

11

मैं अपने आधार पेज में एक संपत्ति घोषित, या आप में यह घोषणा कर सकते हैं:

+1

मुझे लगता है कि आपका मतलब #if DEBUG डीबग = सत्य; #endif – empi

+2

डीबग डिफ़ॉल्ट रूप से गलत पर शुरू किया जाएगा, इसलिए आप IsDebug विधि हमेशा झूठी वापसी करेंगे, क्या आप बूल डीबग = सच खो रहे हैं? – Benny

+0

स्थानीय चर ** ** ** किसी भी चीज़ के लिए प्रारंभ नहीं हैं, इसलिए वर्तमान संशोधन रिलीज मोड में संकलित नहीं होता है। – dtb

62

Detecting ASP.NET Debug mode

if (HttpContext.Current.IsDebuggingEnabled) 
{ 
    // this is executed only in the debug version 
} 

MSDN से:

HttpContext.IsDebuggingEnabled संपत्ति

यह बताते हैं कि वर्तमान HTTP अनुरोध डिबग मोड में है एक मूल्य हो जाता है।

+0

सबसे अच्छा जवाब! : डी – Chiramisu

+1

एमवीसी 5 में यह सिर्फ 'अगर (HttpContext.IsDebuggingEnabled) 'है। – JohnnyHK