C ++ / CLI प्रोजेक्ट को 4.0 से अधिक दूसरे फ्रेमवर्क में vs2010 के साथ बदलें


153

जब से मैंने अपने प्रोजेक्ट को विज़ुअल स्टूडियो 2010 प्रोजेक्ट फॉर्मेट में अपग्रेड किया है, मेरा C ++ / CLI प्रोजेक्ट .net फ्रेमवर्क 4.0 को लक्षित है।

C # प्रोजेक्ट से फ्रेमवर्क संस्करण को किसी अन्य संस्करण में स्विच करना आसान है, लेकिन मेरे पास C ++ / CLI प्रोजेक्ट में ऐसा करने का कोई सुराग नहीं है, मुझे प्रोजेक्ट प्रॉपर्टी पृष्ठों में इसके लिए कोई सेटिंग नहीं दिखती है।

जवाबों:


190

जब आप फ्रेमवर्क और संदर्भ संवाद में F1 दबाते हैं तो यह पता चलता है:

नई परियोजनाओं के लिए डिफ़ॉल्ट रूप से, लक्षित फ्रेमवर्क .NET फ्रेमवर्क पर सेट है। आईडीई लक्षित रूपरेखा को संशोधित करने का समर्थन नहीं करता है, लेकिन आप मैन्युअल रूप से बदल सकते हैं। प्रोजेक्ट फ़ाइल (.vcxproj) में, डिफ़ॉल्ट लक्षित फ्रेमवर्क v4.0 संपत्ति तत्व द्वारा दर्शाया गया है। लक्षित फ्रेमवर्क को बदलने के लिए, प्रोजेक्ट को अनलोड करें, प्रोजेक्ट फ़ाइल को खोलने के लिए टेक्स्ट एडिटर का उपयोग करें, और फिर v4.0 से प्रॉपर्टी एलिमेंट के मूल्य को दूसरे संस्करण में बदलें जो आपके सर्वर पर इंस्टॉल है। उदाहरण के लिए, यदि आप v3.5 निर्दिष्ट करते हैं, जो .NET फ्रेमवर्क v3.5 का प्रतिनिधित्व करता है, तो Visual Studio 2008 SP1 को स्थापित किया जाना चाहिए । फ़ाइल को सहेजें और बंद करें, परियोजना को फिर से लोड करें, और सत्यापित करें कि लक्षित रूपरेखा संपत्ति पृष्ठ में प्रदर्शित की गई है। *

परिवर्तित परियोजनाओं पर यह बहुत सटीक नहीं है, आपको <TargetFrameworkVersion>स्वयं तत्व जोड़ना होगा । इसे "ग्लोबल्स" नामक प्रॉपर्टीग्रेप में रखें:

  <PropertyGroup Label="Globals">
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <others...>
  </PropertyGroup>

जब आप VS2012 और ऊपर का उपयोग करते हैं तो कहानी अलग होती है, वीएस का पहला संस्करण जिसने सामान्य संपत्ति पृष्ठ में प्लेटफ़ॉर्म टूलसेट सेटिंग का अधिग्रहण किया। आपको 3.5 के लक्ष्य के लिए एक उचित निर्माण करने के लिए "v90" का चयन करना होगा। हालांकि यह अनाड़ी है, आपके पास मशीन पर स्थापित वीएस के सभी मध्यवर्ती संस्करण होने चाहिए जो कि चयन के लिए उपलब्ध हों।

आपको VS2008 स्थापित करने की आवश्यकता क्यों है, इसके लिए स्वयं एक स्पष्टीकरण की आवश्यकता है। मुख्य मुद्दा यह है कि C रनटाइम लाइब्रेरी (msvcrt100.dll और ऊपर) प्रबंधित कोड निष्पादन का समर्थन करने के लिए .NET कोड है। महत्वपूर्ण विवरण एक मॉड्यूल इनिशियलाइज़र है जो यह सुनिश्चित करता है कि सीटीटी / सीएलआई कोड का उपयोग करने वाले प्रोग्राम में सीआरटी को सही ढंग से आरंभीकृत किया गया है। यह कोड हमेशा .NET 4 को लक्षित करता है और चूंकि यह msvcrt100.dll (और ऊपर) में हार्ड-बेक्ड है, इसलिए आपके पास हमेशा v4.0.30319 रनटाइम पर रॉक-हार्ड निर्भरता होती है। जब आप पुराने C रनटाइम, msvcrt90.dll का उपयोग करते हैं तो आपके पास केवल शुद्ध v2.0.50727 निर्भरता हो सकती है। जब आप कंपाइलर की #include फ़ाइलों का उपयोग VS2008 करते हैं, तो आप केवल यह सुनिश्चित कर सकते हैं कि आपके पास एक msvcrt90.dll निर्भरता है।

ठंड मुश्किल तथ्य यह है कि जल्द ही .NET 4 में जाना बहुत जरूरी है, यदि आप ऐसा नहीं करते हैं तो आप इस तरह की समस्याओं से जूझेंगे। इसके लिए बहुत कम व्यावहारिक बाधाएं हैं। .NET 4 उन सभी लक्ष्यों पर मुफ्त में व्यापक रूप से उपलब्ध है जिनकी आप कल्पना करेंगे। FUD पर काबू पाने के लिए जो एक उच्च रनटाइम संस्करण के साथ जुड़ा हुआ है, आम तौर पर केवल वास्तविक मुद्दा होता है। भय और संदेह का कोई कारण नहीं है, यह स्थिर है।


8
मैंने अब ये चरण किए, लेकिन अब मुझे "MSB8009: .NET फ्रेमवर्क 2.0 / 3.0 / 3.5" त्रुटि मिलती है, जो वीवी प्लेटफॉर्म टूलसेट को लक्षित करता है। कृपया सुनिश्चित करें कि विज़ुअल स्टूडियो 2008 मशीन पर स्थापित है "। मेरे पास VS2008 नहीं है।
कोडाइमनिक्स

8
मेरे जवाब से उद्धरण: "विजुअल स्टूडियो 2008 SP1 स्थापित किया जाना चाहिए"। आपको आवश्यक निर्माण उपकरण याद आ रहे हैं।
हंस पसंत

2
हो सकता है कि आपको .suo फ़ाइल को हटाने और समाधान को फिर से खोलने की भी आवश्यकता होगी। जैसा कि मेरे मामले में था।
एलेरो

मुझे यह काम विजुअल स्टूडियो 2008 एक्सप्रेस (फ्री) स्थापित करके मिला है। जब मैंने प्लेटफ़ॉर्म टूलसेट को v90 में बदला तो मुझे वास्तव में एक टन त्रुटियां मिलीं। V100 पर वापस जाकर उन सभी को ठीक कर दिया!
simon.d

4
.NET फ्रेमवर्क 4.0-प्रोग्राम बनाते समय जो विजुअल स्टूडियो 2010 का उपयोग करके मिश्रित C ​​++ / CLI और C # -प्रोजेक्ट का उपयोग करते हैं, .NET फ्रेमवर्क 4.5 (या .NET स्टूडियो 4.5 के साथ आने वाले विजुअल स्टूडियो 2013) को स्थापित करने से C ++ / CLI- प्रोजेक्ट में आते हैं वीएस 2010 को पूर्व में 4.0 के बजाय 4.5 के खिलाफ बनाया जाना था। जब आपके पास C # -प्रोजेक्ट होता है जो C ++ / CLI- प्रोजेक्ट्स को संदर्भित करने वाले एक ही समाधान में 4.0 के विरुद्ध बनाया जाता है, तो यह टूट जाता है। C ++ / CLI- प्रोजेक्ट्स की vcxproj फ़ाइलों में <TargetFrameworkVersion> v4.0 </ TargetFrameworkVersion> सम्मिलित करना इस समस्या को हल करता है। \ o /
डैनियल अल्बुशैट

18

हां, प्रबंधित C ++ परियोजनाओं के लिए भी लक्ष्य बदलना संभव है:

C ++ / CLI (VS 2010) के लिए लक्ष्य .NET फ्रेमवर्क बदलना। C ++ / CLI परियोजनाओं के लिए .NET फ्रेमवर्क के संस्करण को बदलना (VS 2010)

सॉल्यूशन एक्सप्लोरर में प्रॉजेक्ट पर राइट क्लिक करें और अनलोड प्रोजेक्ट पर क्लिक करें। सॉल्यूशन एक्सप्लोरर में अनलोड प्रोजेक्ट पर राइट क्लिक करें और एडिट <projectname>.vcxprojइन प्रोजेक्ट को चुनें । एक्सएमएल फाइल नोड का पता लगाती है <PropertyGroup Label="Globals">। उस नोड में नोड का पता लगाएं <TargetFrameworkVersion>(यदि नोड नहीं मिल सकता है, तो इसे जोड़ें) नोड के इनर टेक्स्ट को परिभाषित करता है। लक्ष्य रूपरेखा। यह v2.0, v3.0, v3.5 या v4.0 vcxproj फाइल को सेव कर सकता है और इसे बंद कर सकता है और सॉल्यूशन एक्सप्लोरर में अनलोड प्रोजेक्ट पर राइट क्लिक करें और रिलोड प्रोजेक्ट उदाहरण पर क्लिक करें <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

नोट: ये चरण केवल Visual Studio 2010 के लिए लागू होते हैं क्योंकि यह C ++ प्रोजेक्ट फ़ाइलों के नए प्रारूप का उपयोग करता है।

MSDN पर स्रोत: कैसे करें: लक्ष्य .NET फ्रेमवर्क बदलें


5

एक अनाम उपयोगकर्ता द्वारा:

(संपादन के रूप में मैं एक नया उपयोगकर्ता हूं और इस पर प्रतिक्रिया नहीं दे सकता, जिसे भी निम्नलिखित महसूस करने के लिए स्वतंत्र महसूस होता है) टूलसेट को बदलकर v100 वास्तव में .NET 4.0 को लक्षित करने के लिए VS2010 का कारण बनता है, भले ही यह अभी भी 3.5 को लक्षित करने के रूप में दिखाई देगा। परियोजना के गुण। VS2010 को वास्तव में इस बारे में एक चेतावनी देनी चाहिए, क्योंकि वर्तमान में यह आप के रूप में प्रकट होता है, हालांकि आप v 3.5 टूलसेट के साथ .NET 3.5 को लक्षित कर सकते हैं, जिसे आप नहीं कर सकते।


ऐसा इसलिए है क्योंकि बहु-लक्ष्यीकरण केवल आपको V2.0, 3.0, 3.5 और 4.0 को लक्षित करने की अनुमति देता है; .Net के 1.x संस्करणों को इस तरह से लक्षित नहीं किया जा सकता है
जीरो लैंडर

0

वीएस 2010 में यदि टूलसेट स्थापित किया गया है तो प्रोजेक्ट प्रॉपर्टीज पर जाएं-> कॉन्फिगर प्रॉपर्टीज-> सामान्य और प्लेटफार्म टूलसेट को v90 से v100 में बदलें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.