2013-02-08 3 views
6

मुझे Visual C# .NET Framework 4.0 समर्थित प्रोजेक्ट को लिंक करते समय यह त्रुटि मिलती है क्योंकि मैंने 4.5 .NET Framework के साथ C++ CLR DLL का संदर्भ जोड़ा है।सी ++ सीएलआर समर्थित डीएलएल परियोजना के लिए विजुअल स्टूडियो 2012 में .NET फ्रेमवर्क 4.5 से 4 डाउनग्रेड करें?

error CS0246: The type or namespace name 'project' could not be found (are you missing a using directive or an assembly reference?) 

नतीजतन, यह कैसे सी ++ CLR के लिए मैं दृश्य स्टूडियो 2012 में 4.0 .NET फ़्रेमवर्क 4.5 डाउनग्रेड कर समर्थित DLL परियोजना?

मैंने इसे पहले देखा है जो कारण था। मेरी सी ++ के लिए, इस लिंक मेरी कारण बाहर में मदद मिल सकती http://msdn.microsoft.com/en-us/library/bb772098(v=vs.90).aspx

मैं बस के साथ-साथ इस चेतावनी की खोज:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5): warning MSB3274: The primary reference "X" could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0". 

किसी को भी इस से पहले देखा है? तो मैं सी ++ डीएलएल कैसे डाउनग्रेड करता हूं?

धन्यवाद

+0

दोस्त - आप किसके बारे में बात कर रहे हैं? 1) आपको अपने प्रोजेक्ट को कॉन्फ़िगर करने में सक्षम होना चाहिए। नेट की किसी भी संस्करण को लक्षित करने के लिए, और 2) आपके द्वारा दी गई सीमित जानकारी के आधार पर, मुझे यह भी विश्वास नहीं है कि आपकी बिल्ड त्रुटि आवश्यक है। नेट संस्करण संबंधित है। सुझाव: अपनी मूल परियोजना में, "परियोजना" कहां से आया, यह पता लगाएं। वापस विवरण पोस्ट करें। – paulsm4

+0

मैंने सवाल अपडेट किया है लेकिन मैंने यह अन्य सी ++ डीएलएल –

उत्तर

11

सी ++ आईडीई नेट परियोजनाओं के लिए बहु को निशाना बनाने का समर्थन नहीं करता। आपको हाथ से .vcxproj को संपादित करने की आवश्यकता होगी। प्रोजेक्ट को बंद करें यदि आपने इसे खोल दिया है और टेक्स्ट एडिटर में .vcxproj खोलें। इस पंक्ति का पता लगाएं:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> 

और इसे "v4.0" में संशोधित करें। वीएस में फिर से परियोजना खोलें। परियोजना + गुण, सामान्य गुण, फ्रेमवर्क और संदर्भ। सूची में "सिस्टम" का चयन करें और सापेक्ष पथ संपत्ति की जांच करें। अब यह 4.0 संस्करण को इंगित करना चाहिए।

एक महत्वपूर्ण समस्या से सावधान रहें और मुख्य कारण यह है कि सी ++ आईडीई बहु-लक्ष्यीकरण का समर्थन नहीं करता है। #using directive के साथ कोई समस्या है, यह c: \ windows \ microsoft.net उपनिर्देशिका से असेंबली लोड करता है। जब आप 4.0 को लक्षित करते हैं तो 4.0 असेंबली के बजाय इसे .NET 4.5 असेंबली लोड करने के लिए कौन सा होगा। 4.0 संदर्भ असेंबली c: \ प्रोग्राम फ़ाइलों \ संदर्भ असेंबली में संग्रहीत हैं। यह रनटाइम समस्याओं का निदान करने में बहुत मुश्किल हो सकता है, 4.5 असेंबली 4.0 असेंबली के साथ संगत नहीं हैं। अपने कोड में #using से बचने के लिए यह आसान है, लेकिन इसमें शामिल/msclr/marshal.h शामिल है और/vcclr.h शीर्षलेख फ़ाइलें शामिल हैं। यदि आप इन शीर्षकों का उपयोग करते हैं तो चेतावनी emptor।

+0

कूल विकसित किया - मुझे यह कभी नहीं पता था। मैं हर समय एमएसवीएस का उपयोग करता हूं ... लेकिन माइक्रोसॉफ्ट के (भयानक, आईएमएचओ) "सीएलआई/प्रबंधित सी ++ के लिए कभी नहीं। धन्यवाद - – paulsm4

+0

" शामिल/msclr/marshal.h "और" शामिल/vcclr "के साथ समस्या। एच "भी होता है यदि आप एक सी ++/सीएलआर परियोजना को 4.5 से 4.5.1, 4.5.2, 4.6 या 4.6.1 में VS2012 में अपग्रेड करते हैं। – Matthieu

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