2012-03-03 13 views
6

मैंने अभी विंडोज 8 के भीतर वीएस 11 स्थापित किया है। जब मुझे वीएस 2010 के साथ बनाया गया एक समाधान मिला है, तो इसे बनाया गया है, मुझे यह त्रुटि मिल रही है (वीएस 11 में):सिस्टम। एकाधिक असेंबली में परिभाषित सिस्टम।

पूर्वनिर्धारित प्रकार 'System.Tuple' को वैश्विक उपनाम में एकाधिक असेंबली में परिभाषित किया गया है; से परिभाषा का उपयोग 'सी: \ Program Files (x86) \ संदर्भ विधानसभाओं \ Microsoft \ Framework.NETFramework \ v4.0 \ mscorlib.dll'

मैं गूगल के माध्यम से एक जवाब खोजने के लिए नहीं कर पाए हैं । और मुझे नहीं पता कि "वैश्विक उपनाम" क्या है। Google शब्द के माध्यम से खोजने के लिए ये शब्द बहुत सामान्य हैं।

वीएस 11 ने स्वचालित रूप से कुछ बदलाव किए हैं, इसलिए मैंने उनको अव्यवस्थित किया, फिर से संकलित किया, और एक ही त्रुटि मिली।

मुझे यकीन नहीं है कि क्या करना है। किसी को भी इस त्रुटि को हल करने का तरीका पता है? और वैश्विक उपनाम क्या है?

संपादित करें - ये संदर्भ है कि वर्तमान में परियोजना

में मौजूद मैं संदर्भ इस्तेमाल नहीं किया गया को हटाने की कोशिश की लेकिन मैं अभी भी त्रुटि मिली हैं।

enter image description here

संपादित करें 2 - उत्तर

यह System.Tuple, रेवेन विधानसभा के भीतर, .NET 4.0 System.Tuple के साथ संघर्ष। क्रिस्टोफर करीन्स को उनके जवाब में यह बताने के लिए धन्यवाद।

enter image description here

+0

वैश्विक नामस्थान उर्फ ​​'वैश्विक' है ::। वह मदद करने वाला नहीं है। संदर्भ नोड में असेंबली की सूची दस्तावेज। या केवल चेतावनी को अनदेखा करें और आरटीएम संस्करण की प्रतीक्षा करें। –

+0

यदि आप सिस्टम के लिए ऑब्जेक्ट ब्राउज़र में खोज करते हैं तो क्या होता है। ठीक है? यह आपको अपने समाधान में सभी असेंबली दिखाएगा जो इसे परिभाषित करते हैं। –

उत्तर

5

यह रेवेन जैसा दिखता है। एबस्ट्रेशंस .NET 4.0 संदर्भ के बजाय .NET 3.5 असेंबली है। यदि आप स्रोत कोड for RavenDB Here देखते हैं, तो आप देखेंगे कि यह Tuple<T, U> कक्षा को परिभाषित करता है यदि इसे .NET 3.5 के लिए बनाया गया है।

आपने कुछ समय पर अपनी परियोजना को .NET 3.5 से .NET 4.0 में अपडेट किया होगा, क्योंकि मुझे यह भी पता है कि आपके पास System.Core का संदर्भ है। .NET 4 में, System.Core डिफ़ॉल्ट रूप से संदर्भित है और इसलिए कि आपकी परियोजना में संदर्भ अनावश्यक है।

मेरा सुझाव है कि आप सभी असेंबली पाते हैं जिन्हें आप पहले से ही अपने प्रोजेक्ट में संदर्भित कर रहे हैं और यदि उपलब्ध हो तो उन्हें .NET 4 संस्करणों के साथ प्रतिस्थापित कर सकते हैं। मुझे पता है कि .NET में उस अतिरिक्त संगतता है, जिसमें यह एक ही समय में एक प्रक्रिया में रनटाइम के दो संस्करणों को लोड करने की अनुमति देता है, लेकिन मैं कल्पना नहीं कर सकता कि यह कुछ स्तर पर प्रदर्शन को प्रभावित नहीं करता है, यहां तक ​​कि अगर केवल एक छोटा सा बिट। हालांकि .NET 4 रनटाइम कई तरीकों से बेहतर है, विशेष रूप से बड़ी वस्तु ढेर। मुझे लगता है कि मैं थोड़ा सा ranting हूँ। बस अपडेट करें कि आप कौन सी असेंबली 4.0 कर सकते हैं, या अपने प्रोजेक्ट के संस्करण को 3.5 तक वापस बदल सकते हैं।

+0

मुझे अभी सिस्टम मिला है। ऑब्जेक्ट ब्राउज़र का उपयोग करके Raven.Abstractions-3.5 के भीतर परिभाषित किया गया है। तो इसका मतलब है कि जब मैं 4.0 तक अपग्रेड किया गया, तो यह रावेन 3.5 सिस्टम से विवाद हुआ। बस। धन्यवाद! –

3

बस एक ही समस्या हल हो जाती है। ऐसा प्रतीत होता है कि मेरे पास एक परियोजना में FSharp.Core का हार्डकोड संस्करण था (यह सी # प्रोजेक्ट था, बीटीडब्ल्यू)। <Reference Include="FSharp.Core, Version=2.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> से <Reference Include="FSharp.Core" /> चेतावनी के बाद बदलने के बाद।

+0

धन्यवाद, लेकिन मेरे पास यह संदर्भ नहीं है। असल में, मेरे पास कोई संदर्भ नहीं है जो संस्करण-विशिष्ट हैं। –

0

धन्यवाद, मैं

  • परियोजना, तो
  • राइट क्लिक करें> संपादित उतार दिया है, और जैसे आपने कहा
  • <Reference Include="FSharp.Core" />

    डाल दिया।

चेतावनी चली गई! एक ही समस्या में

1

भागो। इस बार मेरी परियोजना .NET 4.5 और एक संदर्भ .NET 3.5 डीएल में है। यह बिल्ड विफल रहा क्योंकि system.tuple के लिए कई असेंबली हैं। इस के आसपास काम करने के लिए, मेरे सहयोगी ने "ग्लोबल" से कुछ और संदर्भ में संदर्भ परियोजना के उपनाम (संपत्ति के तहत) को बदलने का सुझाव दिया। इससे निर्माण चेतावनी/त्रुटि ठीक हो जाती है।

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