2009-06-02 11 views
5

मेरे पास .NET 3.5 C# प्रोजेक्ट है जिसमें SampleNamespace.Tools.Sample का नामस्थान है।संदर्भ नाम केस सीएलएस अनुपालन नहीं है

मैं अपने प्रोजेक्ट मैं निम्न चेतावनी प्राप्त करने के लिए एक विधानसभा "Samplenamespace.Utils.Example" कहा जाता है जोड़ते हैं:

पहचानकर्ता 'Samplenamespace' मामले में केवल भिन्न सीएलएस अनुरूप

नहीं है

Samplenamespace में निचले मामले 'एन' पर ध्यान दें।

मैं इस समय मेरी परियोजना में संदर्भ असेंबली का भी उपयोग नहीं कर रहा हूं। इसे संदर्भ के रूप में जोड़ना चेतावनी का कारण बनता है।

संकलक इस बारे में शिकायत क्यों कर रहा है कि मैं अपने सार्वजनिक वर्गों में असेंबली के किसी भी संदर्भ का खुलासा नहीं कर रहा हूं?

कोई कामकाज?

उत्तर

7

सभी .NET भाषाएं केस संवेदनशील नहीं हैं (उदाहरण के लिए वीबी) जब आपके पास मिश्रित नेमस्पेस होते हैं, केवल मामले में (चेतावनी के शब्द का उपयोग करने के लिए) भिन्न होता है तो आपका कोड अन्य डेवलपर्स तक पहुंच योग्य नहीं हो सकता है।

कि अपने मामले, जिसके कारण यह एक चेतावनी है (जो मेरी दुकान में हम एक त्रुटि के रूप में इलाज)

+0

धन्यवाद राल्फ, मुझे अभी भी समझ में नहीं आ रहा है कि यह क्यों मायने रखता है क्योंकि मेरी परियोजना किसी भी संभावित वीबी ग्राहकों को संदर्भित असेंबली के रूप में कुछ भी नहीं उजागर कर रही है। मैं प्रभावी रूप से अंतर्निहित असेंबली से वीबी ग्राहक को सारणीबद्ध कर रहा हूं? – user115909

+0

चूंकि वीबी केस-संवेदी नहीं है, इसलिए यह SampleNamespace.A और Samplenamespace.A के बीच अंतर करने में सक्षम नहीं है और इसलिए यह निर्धारित करने में सक्षम नहीं है कि किस प्रकार का आह्वान करना है। ऐसी अस्पष्टता को रोकने के लिए सी # कंपाइलर इसे ध्वजांकित करता है ताकि आप केवल प्रकार और सदस्यों को बना सकें जिन्हें किसी भी अस्पष्टता के बिना सभी द्वारा बुलाया जा सके। – Gishu

+0

मुझे लगता है, यह एक अंधेरा चेक-एंड-फ्लैग है, यह इस बात पर विचार नहीं कर रहा है कि आप वास्तव में किस प्रकार का उपयोग कर रहे हैं या इसका पर्दाफाश कर रहे हैं। – Gishu

2

यह बस के बाद से नहीं सभी भाषाओं में चेतावनी है अपने समाधान के भीतर प्रकार उपभोग कर सकते हैं कि नहीं किया जा सकता होगा अंतर से अवगत रहें (और प्रकारों का उपयोग करने में असमर्थ हो सकते हैं)।

मुझे लगता है कि आप (read more here) (AssemblyInfo.cs फ़ाइल में) गैर सीएलएस अनुरूप होने के रूप में अपने विधानसभा चिह्नित करके इस चेतावनी से बचने कर सकते हैं:

[assembly:CLSCompliant(false)] 

सुनिश्चित नहीं हैं कि मुझे लगता है कि यह एक अच्छा विचार है, हालांकि ...

अद्यतन: मुझे लगता है कि चेतावनी जारी की गई है, हालांकि कुछ भी सार्वजनिक रूप से उजागर नहीं किया गया है कि नामस्थानों में एक्सेस संशोधक नहीं हैं। आप शायद कह सकते हैं कि नेमस्पेस हमेशा सार्वजनिक होते हैं, इसलिए संभावित ग्राहकों के संपर्क में हैं, भले ही उनमें कोई सार्वजनिक प्रकार न हो।

+0

फ्रेड्रिक, मैं कोड को कोई भी सीएलएस-अनुपालन नहीं कर सकता था, लेकिन मैं इस ऐप के किसी भी क्लाइंट कोड पर विचार नहीं करना चाहता हूं। यह सीएलएस-अनुपालन को तोड़ने के लिए एक वैध स्थिति की तरह प्रतीत नहीं होता है। – user115909

+0

मुझे उत्सुकता मिली और कुछ परीक्षण किए; उत्तर में मेरा अपडेट देखें। –

+0

यह फ़्रेड्रिक के बाद से बनाता है। मुझे लगता है कि मेरे एकमात्र विकल्प या तो नामस्थान बदलना चाहते हैं या सीएलएस अनुपालन को गलत पर सेट करना है। मदद के लिये शुक्रिया – user115909

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