2008-11-04 16 views
18

मैं अन्य ऐप्स में उपयोग के लिए लाइब्रेरी विकसित कर रहा हूं और इस लाइब्रेरी में एनएलओजी के लिए बहुत सारे डिबगिंग और लॉगिंग स्टेटमेंट हैं।विजुअल स्टूडियो - रिलीज मोड में संदर्भ को कैसे हटाएं

जब मैं रिलीज मोड पर स्विच करता हूं तो NLog.dll के संदर्भ को बाहर करना संभव है?

चीयर्स,

+2

अच्छा प्रश्न। मेरे पास एक उपयोग केस है जहां मुझे रिलीज मोड में संदर्भ हटाने की आवश्यकता है। –

उत्तर

25

आप मैन्युअल csproj फ़ाइल को संपादित, और कुछ इस तरह कर सकते हैं:

<Reference Include="NLog" Condition="'$(Configuration)' == 'Debug'" /> 

यह केवल इसे संदर्भ डिबग में है कि विधानसभा में आता है। हालांकि मैं अक्सर ऐसा करने की अनुशंसा नहीं करता हूं, क्योंकि जब आप कॉन्फ़िगरेशन बदलते हैं तो यह व्यवहार विजुअल स्टूडियो में संदर्भ सूची में दिखाई नहीं देता है। यह संकलन करते समय काम करता है हालांकि

+2

मुझे लगता है कि यदि आप लक्ष्यों को स्विच करने के बाद अनलोड और पुनः लोड करते हैं तो आप वीएस को मजबूर कर सकते हैं। –

+5

मैं इस विधि का व्यापक रूप से उपयोग करता हूं और यह बहुत उपयोगी है। दुर्भाग्य से, विजुअल स्टूडियो "अक्षम" संदर्भ के बारे में एक चेतावनी उत्पन्न करेगा। फिर भी, यह 64-बिट बिल्ड और 32-बिट बिल्डों में विभिन्न फ़ाइलों को संदर्भित करने जैसे बहुत महत्वपूर्ण परिदृश्यों की अनुमति देता है। – Sander

0

मैं एक अच्छा तरीका नहीं सोच सकते हैं यह करने के लिए। जब तक आप NLog.dll के लिए एक स्टब संदर्भ लिखा नहीं है। चूंकि आप अपने कोड में संदर्भ का उपयोग कर रहे हैं, इसलिए मैं नहीं देखता कि आप इसे अपनी रिलीज में कैसे हटा सकते हैं।

शायद बहुत देर हो चुकी है लेकिन भविष्य में आप NLog.dll को लपेटने के लिए एक कक्षा लिख ​​सकते हैं और फिर इसे एक ही स्थान पर बदल सकते हैं, इसलिए यह वास्तव में रिलीज़ संस्करण में लॉग इन नहीं करेगा। या किसी प्रकार का ध्वज है।

+0

ठीक है अगर आप #if DEBUG में कोड जोड़ते हैं तो उन्हें रिलीज़ मोड –

+0

वाह में संकलित करते समय बाहर रखा जाता है, प्रत्येक लॉग कॉल पर ऐसा करने से काफी दर्दनाक लगता है। मैं लपेटने का सुझाव दूंगा और फिर सशर्त विशेषता का उपयोग करूँगा। – fostandy

2

मुझे पता है कि एकमात्र तरीका संदर्भ को पूरी तरह से लेना और प्रतिबिंब के माध्यम से असेंबली को कॉल करना है। फिर, आपको केवल तभी लॉग इन करना चाहिए जब असेंबली लोड हो।

-1

यदि आप सुनिश्चित हैं कि उस डीएलएल से कोई कोड उपयोग नहीं किया जाएगा तो संदर्भ को हटाने का कोई कारण नहीं है। उस स्थिति में आप बस डीएलएल को हटा सकते हैं।

-1

आप ऐसा क्यों करना चाहते हैं?

अगर आप लॉगिंग करना बंद करना चाहते हैं, तो आप प्रोग्रामिंग को लॉगिंग बंद कर सकते हैं। प्रदर्शन हिट न्यूनतम होगा। (क्रॉस प्रक्रिया लॉगिंग करते समय भी मुझे एनएलओजी के साथ बड़ी सफलता मिली है।)

अन्यथा, आपको ऊपर वर्णित अनुसार इसे लपेटने की आवश्यकता है।

स्कॉट

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