5

मुझे पता है कि अगर मैं DEBUG कोड के रूप में कोड को चिह्नित करता हूं तो यह रिलीज मोड में नहीं चलाएगा, लेकिन क्या यह अभी भी एक असेंबली में संकलित हो जाता है? मैं बस यह सुनिश्चित करना चाहता हूं कि मेरी असेंबली अतिरिक्त तरीकों से फूला न जाए।सशर्त डेबग - क्या यह अभी भी रिलीज कोड में संकलित है?

[Conditional(DEBUG)] 
private void DoSomeLocalDebugging() 
{ 
    //debugging 
} 

उत्तर

10

हाँ, विधि ही अभी भी लेकिन आप संकलन बनाया गया है।

यह पूरी तरह से तार्किक है - क्योंकि Conditional की बात जब फोन करने वाले बनाया गया है परिभाषित पूर्वप्रक्रमक प्रतीकों पर निर्भर रहना, जब नहीं कॉल प्राप्त करने वाला बनाया गया है।

सरल परीक्षण - इस का निर्माण:

using System; 
using System.Diagnostics; 

class Test 
{ 
    [Conditional("FOO")] 
    static void CallMe() 
    { 
     Console.WriteLine("Called"); 
    } 

    static void Main() 
    { 
     CallMe(); 
    } 
} 

(FOO को परिभाषित करने के बिना) कोड चलाने और आप कोई उत्पादन देखेंगे, लेकिन अगर आप परावर्तक में देखने के लिए आप देखेंगे पद्धति अभी भी वहाँ है।

दूसरे शब्दों में कहें करने के लिए: आपको लगता है कि नेट जारी की विधानसभाओं (जिन्हें हम के खिलाफ संकलन) डीबग प्रतीक के साथ निर्माण कर रहे हैं परिभाषित? अगर वे नहीं हैं (और मुझे दृढ़ता से संदेह है कि वे नहीं हैं!) हम Debug.Assert आदि को कैसे कॉल कर पाएंगे?

बेशक जब आप निजी तरीकों यह मतलब होगा निर्माण कर रहे हैं आप उसे शामिल नहीं - लेकिन आप देख सकते हैं, यह अभी भी बनाया है - जो सादगी और स्थिरता के लिए उचित है।

+1

+1 आप सही हैं। यह सोचने के लिए मेरे बारे में बेवकूफ क्या था। – kemiller2002

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