2011-08-08 8 views
9

मैं वर्तमान में निदान पर परीक्षण कर रहा हूं, और यह मुझे चेतावनी देता है कि असेंबली को CLSCompliant के रूप में चिह्नित किया जाना चाहिए।कोई कारण नहीं है कि डीएलएल को CLSCompliant के रूप में चिह्नित न करें?

हमारी परियोजना सभी सी # है, इसलिए इसकी वास्तव में आवश्यकता नहीं है।

जो मैं सोच रहा हूं वह है: क्या डीएल को चिह्नित करने के लिए कोई नकारात्मक प्रभाव है या क्या मुझे चेतावनी को अक्षम करना चाहिए?

नोट मैं नहीं पूछ रहा हूँ क्या CLSCompliant मतलब यह है कि यहाँ कवर किया जाता है: जब आपके कोड CLSCompliant के रूप में चिह्नित किया गया है What is the 'CLSCompliant' attribute in .NET?

+0

असल में आपके असेंबली को चिह्नित करना बिल वाग्नेर द्वारा "प्रभावी सी #" में कोड सुधार के लिए एक सुझाव है - यदि आपको अपने मालिक के लिए तर्क की आवश्यकता है। देखें: http://www.amazon.com/Effective- विशिष्ट- तरीके- सुधार- आपका/डीपी/0321245660#reader_0321245660 – yas4891

+1

FxCop विधानसभाओं को सीएलएस अनुपालन के रूप में चिह्नित करने की सिफारिश करता है। उस ने कहा, जागरूक रहें कि आप असेंबली को संपूर्ण रूप से सीएलएस के रूप में चिह्नित कर सकते हैं, और फिर उन विधानसभाओं में एकल प्रकार या सदस्यों को '[CLSCompliant (false)] विशेषता के साथ बहिष्कृत कर सकते हैं। यह आवश्यक हो सकता है यदि आप तीसरे पक्ष के पुस्तकालयों से कुछ प्रकार वापस लौटाना या स्वीकार करना चाहते हैं जो सीएलएस स्वयं के अनुरूप नहीं हैं। –

उत्तर

7

यह उन सूक्ष्म मामलों में से एक है ... सीएलएस अनुपालन शायद अधिकांश लाइब्रेरी लेखकों के लिए महत्वपूर्ण है, जो कॉलर कौन नियंत्रित नहीं कर सकता है। आपके मामले में, आप "हमारी परियोजना सभी सी #" बताते हैं, इस मामले में आप सही हैं: इसकी आवश्यकता नहीं है। यह प्रतिबंध जोड़ता है (उदाहरण के लिए, हस्ताक्षरित प्रकारों पर) जो आपके डेटा को सबसे स्पष्ट तरीके से प्रदर्शित करने (या शायद नहीं) प्रभावित कर सकता है।

तो: अगर यह कोई मूल्य नहीं आप - जो भी है, तो स्पष्ट रूप से कहते हैं: कि बंद शासन बारी। यदि आप इसे मुफ्त में जोड़ सकते हैं (गुणों को छोड़कर कोई कोड परिवर्तन नहीं), तो शायद ठीक है - लेकिन सब कुछ एक संतुलन है - परिणाम बनाम परिणाम। यदि यहां कोई लाभ नहीं है, तो समय निवेश न करें।

यदि आप लाइब्रेरी लेखक (व्यापारी या ओएसएस) हैं, तो आपको इसका पालन करना चाहिए।

1

केवल नकारात्मक प्रभाव संकलक त्रुटियों होगा, लेकिन ऐसा नहीं है।

2

कई सी # विशेषताएं हैं जो सीएलएस अनुपालन नहीं हैं, उदाहरण के लिए हस्ताक्षरित प्रकार। चूंकि कई भाषाएं असंवेदनशील हैं, ऐसे में कोई प्रकार और सदस्य नहीं होना चाहिए जो केवल मामले के अनुसार भिन्न हों, उदा। MyObject और myObject, और कई अन्य सुविधाएं। इस प्रकार, यदि आप अन्य .NET भाषाओं के साथ काम करने की योजना नहीं बनाते हैं तो आपके कोड को CLSCompliant के रूप में चिह्नित करने का कोई कारण नहीं है।

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

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