2012-12-17 30 views
8

मेरे पास एक .NET 2.0 एप्लिकेशन है और मैं एक 'स्मार्ट इंस्टॉलर' बनाने की योजना बना रहा हूं जो उपयोगकर्ता के पीसी पर उपलब्ध .NET संस्करण के लिए जांच करता है और इसके लिए मेरा विशिष्ट पोर्ट इंस्टॉल करता है। मैंने देखा कि:पूरी तरह से .NET संस्करणों और पिछड़े संगतता को समझना

  • Windows XP (SP2) .NET 2.0 के साथ आता है
  • Windows Vista के साथ आता है .NET 3.0
  • विंडोज 7 आता है के साथ .NET 3.5
  • Windows 8 नेट के साथ आता है 4.5

जहां तक ​​मुझे पता है, एकमात्र चीज जो पिछड़ा संगत नहीं है वह सीएलआर संस्करण है, जो .NET 4.0 के बाद बदल जाती है।

तो अगर मैं नहीं है उपयोगकर्ता सिर्फ अपने आवेदन के लिए अतिरिक्त ढांचा स्थापित करना चाहते हैं, मैं अपने ऐप के इन संस्करणों होना चाहिए:

  • .NET 2.0 - XP (SP2 और ऊपरी), विस्टा (3.0 2.0 चलाने में सक्षम होना चाहिए) और 7 (3.5 2.0 चलाने में सक्षम होना चाहिए)
  • .NET 4.0 - अगर किसी ने केवल 4.0 स्थापित किया है और कोई अन्य
  • .NET 4.5 - उन उपयोगकर्ताओं के लिए जिनके पास विंडोज 8 है कोई अन्य .NET स्थापित

क्या मैं सही हूँ? या 4.5/4.0 पिछड़े संगत हैं?

संपादित करें: यदि ऊपरी डेटा के किसी भी सही नहीं है, कृपया ठीक मुझे

+2

उर्फ। आप उपलब्ध एनईटी के प्रत्येक संस्करण के लिए अपने आवेदन का एक अलग संस्करण बनाने जा रहे हैं? बहुत बर्बाद समय और कोडिंग प्रयास की तरह लगता है।क्यों न केवल सबसे कम आम denominator चुनते हैं? – KingCronus

+0

मैं एक पंक्ति नहीं बदलूंगा, बस 3 अलग-अलग संस्करणों के लिए पुन: संकलित करूंगा। मेरा वेब इंस्टॉलर कौन सा इंस्टॉल करेगा चुन देगा। – blez

+2

तो आप किसी भी .NET 3/3.5/4 + सुविधाओं का उपयोग नहीं करेंगे। आप मेरी राय में एक ही .NET 2 संस्करण के साथ ही हो सकता है? उपयोगकर्ता को ढांचा स्थापित करना नहीं चाहते हैं, इसके लिए आपका तर्क क्या है? यह मेरी राय में पूरी तरह से उचित लगता है। – KingCronus

उत्तर

9

जहाँ तक मुझे पता है, केवल एक चीज है कि पिछड़े संगत नहीं है CLR संस्करण है, जो .NET 4.0 के बाद बदल जाता है।

यह सच नहीं है। आप .NET4 ढांचे पर अपना .NET2 संकलित एप्लिकेशन चला सकते हैं।

तुम सिर्फ अपने app.config के लिए निम्न जोड़ने की जरूरत:

<configuration> 
<startup> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 

ध्यान दें, मैं @KingKronus से सहमत हैं, यानी Why not just pick the lowest common denominator?

आपके मामले में कि .NET2 जा संकलित हैं और केवल एक ही पीडीबीएस और एक संकलन सेट का सेट।

हां, आपको अपने .NET2-संकलित ऐप का परीक्षण करने की आवश्यकता होगी .net4 रनटाइम पर ठीक है लेकिन आपको अपने मूल समाधान में प्रत्येक फ्रेमवर्क में अपने ऐप का परीक्षण करने की आवश्यकता होगी।

+0

क्या वही बात है, लेकिन 4.5 के लिए? और क्या यह 4.0 परियोजनाओं पर 3.5 के लिए भी काम करता है? – blez

+1

मैं अभी यह जांच रहा था ... सबसे अच्छी बात यह है कि इसे आजमाएं। यह लिंक भी देखें: http://msdn.microsoft.com/en-us/library/ff602939.aspx '.NET Framework 4.5 उन अनुप्रयोगों के साथ पिछड़ा-संगत है जो .NET Framework संस्करण 1.1, 2.0 के साथ बनाए गए थे, 3.0, 3.5, और 4.' – wal

+0

और हाँ, यह 3.5 परियोजनाओं पर भी काम करेगा; याद रखें कि यह 'काम करता है' क्योंकि .net3.5 प्रोजेक्ट अभी भी .NET2 * रनटाइम * – wal

0
  1. वास्तव में आप इसे मैन्युअल रूप से जांच करने की जरूरत नहीं है। आपका एप्लिकेशन चलाने के बाद उचित संदेश दिखाएगा और उपयोगकर्ता को आवश्यक संस्करण डाउनलोड और स्थापित करने के लिए कहेंगे।

  2. यदि आपको अभी भी विंडोज एक्सपी का समर्थन करने की आवश्यकता है, तो .NET 4.0 चुनें। .NET 4.5 संभाल लेंगे यह

+0

"वास्तव में आपको इसे मैन्युअल रूप से जांचने की आवश्यकता नहीं है। आपका एप्लिकेशन इसे चलाने के बाद उचित संदेश दिखाएगा और उपयोगकर्ता को आवश्यक संस्करण डाउनलोड और स्थापित करने के लिए कहेंगे।" यह केवल विंडोज 8 पर सच है। – blez

+1

@blez गलत। विंडोज एक्सपी और विंडोज 7 आपको उस संवाद को भी दिखाएंगे, मैंने इसे चेक किया है। विंडोज एक्सपी 4.5 को पहचान नहीं पाएगा, लेकिन 4.0 – VladL

+0

के लिए 4.0 मैं उपयोगकर्ता को अपने आवेदन के लिए पूरी ढांचा स्थापित नहीं करना चाहता हूं। – blez