2012-07-29 22 views
14

को अपग्रेड करने के बाद app.config में समर्थित रनटाइम v4.0 VS11 बीटा से VS2012 आरसी में अपग्रेड करने के बाद - मैंने .NET 4.0 से .NET 4.5 को लक्षित करने से संशोधित किया है। मैं app.config में अनुच्छेदVS11 बीटा से VS2012 आरसी

<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
</startup> 

उपरोक्त क्या है?

जब मैं (मौजूदा परियोजना के उन्नयन नहीं) VS2012 आर सी के भीतर से एक नई परियोजना बनाने की कोशिश की मैं अनन्त नेट संस्करण की एक पक्ष प्रभाव है कि app.config

उत्तर

13

में ऊपर अनुभाग दिखाई नहीं देता दलदल। .NET 4.5 .NET Framework का साइड-बाय-साइड संस्करण नहीं है, यह पूरी तरह से .NET 4.0 इंस्टॉल को प्रतिस्थापित करता है। 3.0 और 3.5 की तरह एक .NET 2.0 इंस्टॉल की जगह ले ली गई।

3.0 और 3.5 अपडेट बहुत हल्के थे, ढांचे ने अभी नई असेंबली का एक गुच्छा हासिल किया था। सीएलआर और कोर बेस क्लास असेंबली नहीं बदलीं। बहुत।

clr.dll फ़ाइल ढांचे के 4.5 संस्करण के साथ शामिल है अभी भी 4.0.3031 9 संस्करण संख्या है। सीएलआर के 4.0 संस्करण का वही संस्करण संख्या। और .NET 4.0 फ्रेमवर्क को लक्षित करने वाले .NET ऐप्स को निष्पादित करने में कोई दिक्कत नहीं है।

उस फ्रेमवर्क संस्करण को आंतरिक रूप से आंतरिक रूप से संशोधित किया गया था। इसने भाषा प्रक्षेपण हासिल किया जो एक प्रबंधित भाषा में विंडोज 8 पर चलने वाले मेट्रो ऐप्स लिखने में सक्षम बनाता है। भारी परिवर्तनों में कक्षाओं को एक असेंबली से दूसरे में ले जाना शामिल है, जिससे फ़ोन या स्लेट को तैनात करने की इजाजत मिलती है। आपकी प्रोजेक्ट में जोड़ा गया app.exe.config फ़ाइल यह सुनिश्चित करता है कि आपके उपयोगकर्ता के पास आवश्यक संस्करण हो। .config फ़ाइल को तैनात करना वैकल्पिक है, लेकिन उपयोगकर्ता को एक सुंदर अपारदर्शी अपवाद संदेश दिखाई देगा जब उसके पास केवल .NET 4.0 स्थापित है। वास्तव में यह सुनिश्चित नहीं है कि यह कैसा दिखता है। स्वचालित इंस्टॉल जो तब ट्रिगर होता है जब उसके पास 4.5 नहीं होता है, शायद यह भी काम नहीं करता है।

+0

इसलिए जब उपयोगकर्ता .NET 4.0 है तो यह त्रुटि प्रदर्शित करेगा कि उस कॉन्फ़िगरेशन के साथ .NET 4.5 आवश्यक है। अगर उस कॉन्फ़िगरेशन के बारे में नहीं है तो कैसे?क्या मैं .NET 4.5 को लक्षित करने के बाद भी त्रुटि को फेंक नहीं सकता? – friend

+0

हां, लेकिन एक जो व्याख्या करने के लिए बहुत कठिन है। MissingMethodException या FileNotFoundException की तरह, एक दोस्ताना संदेश नहीं है जैसे "आपके पास .NET 4.5 नहीं है, क्या आप मुझे इसे अपने लिए इंस्टॉल करना चाहते हैं?" Http://stackoverflow.com/a/10033128/17034 –

+1

@nobugz देखें, मैं हमेशा थोड़ा उलझन में रहा हूं क्योंकि मेरे आवेदन के साथ .NET के किस संस्करण को उपलब्ध कराने की आवश्यकता है। उपर्युक्त आपकी टिप्पणी के आधार पर, क्या मैं समझ सकता हूं कि .NET 4.5 ** को लक्षित करने वाले अनुप्रयोगों को केवल ** .NET 4.5 उपलब्ध करना है? दूसरे शब्दों में, मुझे चिंता करने की ज़रूरत नहीं है अगर .NET 3.5, 3.0, आदि सिस्टम पर हैं? –

9

जबकि हंस पासेंट सबकुछ में सही है, लेकिन वह कहता है कि वह एक महत्वपूर्ण बिंदु याद करता है जो इस हार में पीई हेडर की भूमिका है।

क्योंकि डॉटनेट 4.5 डॉटनेट 4.0 के शीर्ष पर एक जगह स्थापित है, और क्योंकि यह डॉटनेट संस्करण संख्या को अद्यतन नहीं करता है, नतीजा यह है कि डॉटनेट 4.5 का उपयोग करके बनाए गए बाइनरी में पुराने डॉटनेट 4.0 संस्करण संख्या है बाइनरी के पीई हेडर (4.0.3031 9)।

क्योंकि सीएलआर पीई हेडर में इस मान का उपयोग यह निर्धारित करने के लिए करता है कि डॉटनेट फ्रेमवर्क का कौन सा संस्करण लोड करना है, और क्योंकि यह मान डॉटनेट 4.5 के खिलाफ बनाए गए असेंबली के लिए नहीं बदलता है, फिर किसी भी अतिरिक्त जानकारी की अनुपस्थिति में सीएलआर यह जानने का कोई तरीका नहीं है कि पीई हेडर में 4.0.3031 9 के साथ एक असेंबली को डॉटनेट 4.0 या 4.5 से लिंक करने की आवश्यकता है या नहीं।

यह app.config में समर्थितRuntime तत्व की उपस्थिति है जो सीएलआर को यह अतिरिक्त जानकारी प्रदान करता है। तो यदि आप एक डॉटनेट 4.5 एप्लिकेशन को एक सिस्टम पर मौजूद समर्थित रंटिम एंट्री के साथ लॉन्च करते हैं जिसमें केवल डॉटनेट 4.0 स्थापित है, तो सीएलआर आपको एक सूचित संदेश पॉप अप करेगा कि आपके पास डॉटनेट इंस्टॉल करने का आवश्यक संस्करण नहीं है। जबकि यदि आप उसी डॉटनेट 4.5 एप्लिकेशन को के बिना लॉन्च करते हैं, तो उस सिस्टम पर समर्थित रंटिम प्रविष्टि जिसमें केवल डॉटनेट 4.0 स्थापित है, तो एप्लिकेशन चलाना शुरू हो सकता है, लेकिन फिर बाद में जब यह डॉटनेट 4.5 सुविधा का उपयोग करने का प्रयास करता है तो क्रैश हो जाता है।

वीएस2012 आरसी और लक्ष्यीकरण डॉटनेट 4.5 का उपयोग करके बनाई गई परियोजनाओं में समर्थित रूटटाइम प्रविष्टि गायब हो सकती है, वीएस2012 आरटीएम का उपयोग करके बनाई गई परियोजनाओं में प्रवेश हो सकता है।