2008-12-03 17 views
7

मुझे आश्चर्य है कि क्या लोग (अर्थात् कंपनी/डेवलपर) वास्तव में शिपिंग असेंबली में चारों ओर झूठ बोलने वाले [SuppressMessage] गुणों के बारे में परवाह करते हैं।.NET [SuppressMessage] शिपिंग असेंबली में विशेषताएँ fxcop

प्रोजेक्ट फ़ाइलों में अलग-अलग कॉन्फ़िगरेशन बनाना जिनमें रिलीज मोड में CODE_ANALYSIS शामिल है और फिर अंतिम निर्माण में इसे बंद करना मुझे लगता है कि मेरे लिए एक टालने योग्य ओवरहेड लगता है।

कोई सर्वश्रेष्ठ स्ट्रेटर्जी नहीं होगा, अगर कोई अंतिम विधानसभा में नहीं रहना चाहता है लेकिन फिर भी उन्हें कोड में उपयोग करना चाहते हैं? और क्या FxCop प्रोजेक्ट फ़ाइलों में उन्हें संग्रहीत करने के कोई फायदे/नुकसान हैं?

[मैं से एक VS2008 प्रो + FxCop 1.36 आ रहा हूँ, बल्कि VS2008 टीम सिस्टम से]

उत्तर

2

चीजों की भव्य योजना में, मुझे नहीं लगता कि यह वास्तव में मायने रखता है। चूंकि यह एक विशेषता है (प्रभावी रूप से मेटा-डेटा), यह कोड प्रदर्शन को प्रभावित नहीं करता है। ऐसा कहा जा रहा है, याद रखें कि विशेषता में दी गई जानकारी किसी भी व्यक्ति के लिए परावर्तक जैसे किसी भी व्यक्ति के लिए उपलब्ध है।

FxCop प्रोजेक्ट फ़ाइल में उन्हें संग्रहीत करने में समस्या यह है कि आपको यह सुनिश्चित करना होगा कि हर कोई एक ही प्रोजेक्ट फ़ाइल का उपयोग करता है और प्रोजेक्ट फ़ाइल हमेशा प्रोजेक्ट के साथ यात्रा करती है (यह स्रोत नियंत्रण में चेक की जाती है, जिसका अर्थ है कि आपको चेक करना होगा प्रत्येक बार जब आप FxCop चलाने के लिए चाहते हैं)।

यदि आप नहीं चाहते हैं कि आपके उत्पादन कोड में SuppressMessage विशेषताएँ आपको केवल उस FXCop के निर्माण में CODE_ANALYSIS प्रतीक को परिभाषित करने की आवश्यकता होगी। इसका मतलब है कि इसे या तो अपने डीबग कॉन्फ़िगरेशन पर या अतिरिक्त कॉन्फ़िगरेशन जोड़ना। जब प्रतीक परिभाषित किया जाता है तो गुण केवल कोड में संकलित किए जाएंगे।

एक स्वचालित/रात के निर्माण दृष्टिकोण से, आप एक कॉन्फ़िगरेशन का उपयोग करके निर्माण कर सकते हैं जिसमें प्रतीक परिभाषित किया गया है और फिर प्रतीक के बिना उत्पादन रिलीज का निर्माण करें या दो बिल्ड करें - प्रतीक परिभाषित एक के साथ, अपने उल्लंघन प्राप्त करने के लिए FxCop चलाएं, और फिर प्रतीक के बिना एक और निर्माण परिभाषित किया।

1

हम एक टन उत्पादन कोड चारों ओर बिखरे हुए हैं, और हम विशेष रूप से परवाह नहीं है। यह perf को प्रभावित नहीं करता है, और कक्षा में कुछ क्रूर दिखने वाली विशेषता होने पर अक्सर इसे हटाने के लिए प्रेरणा मिलती है यदि संभव हो तो।

7

SuppressMessage विशेषता केवल आपके कोड में जोड़ दी जाएगी यदि CODE_ANALYSIS प्रीप्रोसेसर परिभाषा संकलन के दौरान मौजूद है। आप Reflector.exe में विशेषता की परिभाषा को देखकर इसे सत्यापित कर सकते हैं। डिफ़ॉल्ट रूप से इसे रिलीज़ में परिभाषित नहीं किया गया है, इसलिए यह उत्पादन कोड को प्रभावित नहीं करेगा।

आमतौर पर, मैं केवल मेरी असेंबली के डेब्यूग बिल्ड पर FxCop चलाता हूं जहां CODE_ANALYSIS परिभाषित किया जाता है।

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