c# - सी#संकलक चेतावनी 1685




.net compiler-warnings (4)

तो, (प्रतीत होता है) नीले रंग से बाहर, मेरी परियोजना को संकलक चेतावनी 1685 से मिलनी शुरू हुई:

पूर्वनिर्धारित प्रकार 'System.Runtime.CompilerServices.ExtensionAttribute' वैश्विक उपनाम में कई विधानसभाओं में परिभाषित किया गया है; 'c: \ Program Files \ Reference Assemblies \ Microsoft \ फ्रेमवर्क \ v3.5 \ System.Core.dll' से परिभाषा का उपयोग करना

हैरान, मैंने इसके कारण का पता लगाने के लिए MSDN लेख पर शोध किया। यहाँ मुझे मिली जानकारी है:

दृश्य C # संदर्भ: त्रुटियां और चेतावनी संकलक चेतावनी (स्तर 1) CS1685

त्रुटि संदेश पूर्वनिर्धारित प्रकार 'System.type नाम' वैश्विक उपनाम में कई विधानसभाओं में परिभाषित किया गया है; 'फ़ाइल नाम' से परिभाषा का उपयोग करना

यह त्रुटि तब होती है जब पूर्वनिर्धारित सिस्टम प्रकार जैसे System.int32 दो विधानसभाओं में पाया जाता है। ऐसा होने का एक तरीका यह है कि यदि आप mscorlib को दो अलग-अलग जगहों से संदर्भित कर रहे हैं, जैसे कि .Net फ्रेमवर्क संस्करण 1.0 और 1.1 साइड-बाय-साइड चलाने की कोशिश कर रहा है।

कंपाइलर केवल एक असेंबली से परिभाषा का उपयोग करेगा। कंपाइलर केवल वैश्विक उपनाम खोजता है, परिभाषित / संदर्भ पुस्तकालयों को नहीं खोजता है। यदि आपके पास निर्दिष्ट / उदासीन है, तो संकलक ऑब्जेक्ट के लिए खोज करेगा, और भविष्य में उस फ़ाइल में पूर्वनिर्धारित प्रकारों के लिए सभी खोज शुरू करेगा जहां उसे ऑब्जेक्ट मिला।

अब मैं सचमुच अपना सिर खुजला रहा हूं।

  1. मैं .NET फ्रेमवर्क के दो अलग-अलग संस्करण नहीं चला रहा हूं (जब तक कि आप 2.0 और 3.5 की गिनती न करें)।

  2. मैं किसी भी विचित्र विधानसभाओं का संदर्भ नहीं दे रहा हूं जो मुझे संदिग्ध बना सकती हैं।

  3. मुझे अपने आवेदन में कोई बदलाव करने की याद नहीं है जो इस बदलाव को प्रेरित करेगा।

  4. मैंने सत्यापित किया है कि सभी घटक .NET फ्रेमवर्क संस्करण v2.0.50727 को लक्षित करते हैं।

मैं इसे सही करने के सुझाव, या विचार के लिए खुला हूं। मैं चेतावनी को त्रुटियों के रूप में मानता हूं, और यह मुझे पागल कर रहा है।

वास्तव में इसके बारे में मुझे क्या पता है कि मुझे नहीं पता कि ऐसा क्यों हो रहा है। जो चीजें घटित होती हैं, उनका एक कारण होना चाहिए, और मुझे पता होना चाहिए कि वे क्यों हुईं। अगर मैं इसकी व्याख्या नहीं कर सकता, तो मैं इसका सटीक उपाय नहीं कर सकता। अनुमान लगाना कभी संतोषजनक नहीं होता।

आवेदन एक वर्ग पुस्तकालय और एक खिड़कियों रूपों आवेदन से मिलकर सीधा है।

  • एसी # क्लास लाइब्रेरी डीएलएल डेटाबेस एक्सेस को एनकैप्सुलेट करने वाली बेसिक फंक्शनलिटी प्रदान करती है। यह DLL निम्नलिखित घटकों का संदर्भ देता है:

    • प्रणाली
    • System.Core
    • System.Core.Data
    • System.Data
    • System.Data.DataSetExtensions
    • System.Data.OracleClient
    • System.Drawing
    • System.Windows.Forms
    • System.Xml
    • System.Xml.Linq
  • यूआई प्रदान करने वाला एसी # विंडोज फॉर्म एप्लीकेशन। यह एप्लिकेशन निम्नलिखित घटकों को संदर्भित करता है:

    • CleanCode
    • CleanCodeControls (ये दोनों सिंटैक्स संपादक समर्थन प्रदान करते हैं, और स्थानीय रूप से .NET 3.5 के खिलाफ निर्मित होते हैं)।
    • LinqBridge
    • Roswell.Framework (ऊपर कक्षा पुस्तकालय)
    • प्रणाली
    • System.Core
    • System.Data
    • System.Data.DataSetExtensions
    • System.Data.OracleClient
    • System.Deployment
    • प्रणाली की रूपरेखा
    • System.Drawing
    • System.Windows.Forms
    • System.Xml
    • System.Xml.Linq

अगर आपको और जानकारी चाहिए तो मुझे बताएं और मैं इसे खुशी-खुशी प्रदान करूंगा।


FYI करें: मुझे भी यही समस्या थी और Resharper के "Optimize References" कमांड का उपयोग करके और फिर सभी अप्रयुक्त संदर्भों को हटाकर इसे हल करने में सक्षम था। पूरी तरह से यकीन नहीं है कि क्यों काम किया, लेकिन यह किया।


LINQBridge मुझे तुरंत संदिग्ध बनाता है। इसका संपूर्ण आशय 2.0 उपयोगकर्ताओं के लिए विस्तार विशेषता / तरीके आदि प्रदान करना है। यदि आपके पास 3.5 (System.Core.dll) है, तो LINQBridge का उपयोग न करें। यदि आपको किसी अस्पष्ट कारण के लिए 3.5 में LINQBridge की आवश्यकता है (और मैं एक के बारे में नहीं सोच सकता), तो आपको एक बाहरी उपनाम का उपयोग करना पड़ सकता है। लेकिन मुझे वास्तव में संदेह है कि आपको इसकी आवश्यकता है!


इस समस्या का एक अन्य समाधान => राइट क्लिक प्रोजेक्ट -> गुण -> बिल्ड -> त्रुटियों के रूप में चेतावनी मानें -> कोई नहीं


मार्क लगभग निश्चित रूप से सही है। यहां सत्यापित करने का एक तरीका है

  1. Reflector.exe खोलें
  2. सभी गैर-सिस्टम असेंबलियों को जोड़ें
  3. F3 और ExtensionAttribute की खोज करें

अगर यह System.Core के अलावा कहीं भी पॉप अप करता है तो आप जानते हैं कि यह कहां से आ रहा है।





compiler-warnings