6

मैंने विजुअल स्टूडियो 2012 में एक नया सी ++/सीएलआई प्रोजेक्ट बनाया है, जिसमें .NET 2.0 प्रोजेक्ट निर्माण पृष्ठ पर ढांचे के रूप में चुना गया है। मैंने "बाहरी निर्भरता" (mscorlib.dll, System.Data.dll, System.dll, और System.XML.dll) को सत्यापित किया है, "पथ" को c:\Windows\Microsoft.NET\Framework\v2.0.50727\* के रूप में दिखाएं।नई .NET 2.0 सी ++/सीएलआई परियोजना में mscorlib v4 पर निर्भर निर्भरता है?

जब संकलक मेरी सी निम्न त्रुटि के साथ ++ पुस्तकालय के खिलाफ लिंक नहीं कर सकते निर्माण समय में एक ही समाधान में एक सी # .NET 2.0 परियोजना से इस परियोजना के लिए एक संदर्भ बताया: मैं की तरह

Warning 2 The primary reference "D:\GIT\EasyBCD\Release\Win32Interop.dll" could not be resolved because it has an indirect dependency on the .NET Framework assembly "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which has a higher version "4.0.0.0" than the version "2.0.0.0" in the current target framework. C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.Targets 1578

हालांकि, ने कहा, 'Win32Interop' प्रोजेक्ट में संदर्भ स्पष्ट रूप से इंगित करते हैं कि v2.0 का उपयोग किया गया था, और प्रोजेक्ट फ़ाइल में <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> जैसा होना चाहिए।

विजुअल स्टूडियो 2012 मुझे इतना कठिन समय क्यों दे रहा है?

EDIT

रहस्य गहरा होता है। जब सब दूर करने के लिए और उसके बाद C++/CLI परियोजना में नेट संदर्भ फिर से जोड़ का प्रयास कर रहा, यह क्या पता चलता है:

Adding new dependency

आप देख सकते हैं, शीर्ष पर यह कहते हैं, "को लक्ष्य बनाना: .नेट फ्रेमवर्क 2.0 "और" संस्करण "कॉलम इंगित करता है कि मैं संस्करण" 2.0.0.0 "का चयन कर रहा हूं।

.NET dependency list

लक्षित ढांचे रहता है ".NETFramework, संस्करण = v2.0" लेकिन व्यक्तिगत संदर्भ प्रत्येक उस संस्करण से संकेत मिलता है:

हालांकि, ठीक क्लिक करने के बाद यह है कि क्या संदर्भ सूची की तरह लग रहा है "4.0.0.0" का उपयोग किया जा रहा है (फाइल के उस संस्करण के लिए सार्वजनिक कुंजी टोकन के साथ)।

फिर भी प्रत्येक संदर्भ का चयन करते समय गुण संवाद पूरी तरह से बनाए रखता है कि v2.0 फ़ाइल का उपयोग किया जा रहा है। किस पर विश्वास करना है? क्या करें?

+1

भागो ildasm.exe: यहाँ माइक्रोसॉफ्ट कनेक्ट पर लिंक भी है। –

+0

आप सही हैं, यह v4 का उपयोग कर रहा है। हालांकि, कृपया मेरे अपडेट किए गए प्रश्न का संदर्भ लें - मैं इसे किसी अन्य चीज़ का उपयोग नहीं कर सकता। –

+0

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

उत्तर

6

ऐसा प्रतीत होता है कि एक .NET 2.0 सीएलआर प्रोजेक्ट बनाना समर्थित नहीं है। मान्यताओं को सत्यापित करने के Win32Interop.dll विधानसभा पर

https://connect.microsoft.com/VisualStudio/feedback/details/780602/compiling-c-clr-dll-in-vs-2012-targeting-net-2-0-introduces-indirect-dependency-on-net-4-0#tabs

+2

सही, चेतावनी के साथ कि यह .NET 2.0 ** C++ ** प्रोजेक्ट का समर्थन नहीं करता है। –

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

  • कोई संबंधित समस्या नहीं^_^