2008-09-15 42 views
10

क्या 2.0 के बजाय .NET Framework 3.5 के लिए संकलित कोई फायदे हैं?क्या 2.0 के बजाय .NET Framework 3.5 के लिए संकलित कोई फायदे हैं?

उदाहरण कम स्मृति की खपत, तेजी से स्टार्टअप, बेहतर प्रदर्शन के लिए ...

व्यक्तिगत तौर पर मैं तो फिर भी नहीं लगता है, मैं कुछ याद हो सकता है।

संपादित करें: निश्चित रूप से 3.5 ढांचे में और अधिक सुविधाएं हैं, लेकिन ये इस प्रश्न का केंद्र नहीं हैं।

संपादित 2: कोई लाभ नहीं प्रतीत होता है।

संपादित 3: हां मेरा मतलब फ्रेमवर्क को लक्षित करना था। मैंने नवीनतम 3.5 एसपी 1 और वीएस 2008 स्थापित किया है, इसलिए ढांचे के साथ संकलन और लक्ष्यीकरण के बीच क्या अंतर है? मैं प्रोजेक्ट विकल्पों में ढांचे को लक्षित कर सकता हूं लेकिन मैं एक विशिष्ट ढांचे संस्करण के साथ 'संकलन कैसे करूं? मुझे नहीं पता था कि एक अंतर है।

संपादित 4: तो अब हम सहमत हैं कि कोई लाभ नहीं है।

आपके लिए धन्यवाद

उत्तर

5

संकलन और लक्ष्यीकरण के बीच एक अंतर है।

कोड के साथ संकलन (उदाहरण के लिए) सी # 3.0 कंपाइलर शायद आपको प्रदर्शन पर एक बढ़ावा देगा (वैसे भी बहुत कम) क्योंकि उत्पन्न आईएल कोड माई के लिए कुछ अनुकूलन शामिल किया गया है। यह आपको स्वचालित गुणों या लैम्ब्डा अभिव्यक्तियों जैसी कुछ नई सुविधाओं का उपयोग करने की अनुमति देता है।

किसी दिए गए ढांचे के लिए लक्ष्य निर्धारण अपने विधानसभा उस ढांचे (और कूल्हे) के लिए काम करता है और यदि आप 2.0 के लिए लक्षित करते हैं और एक 3.5 लाइब्रेरी का उपयोग कर रहे हैं असफल हो जायेगी सुनिश्चित करेगा। कोई प्रदर्शन सुधार सीधे उस से संबंधित नहीं होगा जब तक कि आप एक वर्ग से दूसरे "सबसे तेज़" वर्ग के साथ एक वर्ग को प्रतिस्थापित नहीं करते। उदाहरण के लिए, .NET 1.1 को लक्षित करने से आपको जेनेरिक का उपयोग करने की अनुमति नहीं मिल जाएगी और इसलिए आपको ArrayList का उपयोग करना होगा जो सूची से काफी धीमी है (मुक्केबाजी और अनबॉक्सिंग के कारण)।

+0

आपने कहा: "यदि आप 2.0 के लिए लक्षित करते हैं और 3.5 लाइब्रेरी का उपयोग कर रहे हैं तो विफल हो जाएगा।" यह सच नहीं है ... .NET 3.5 में .NET 2.0 शामिल है ... इसलिए, 2.0 के लिए लक्षित कुछ भी 3.5 पर ठीक होगा (क्योंकि 2.0 वहां है)। ओटीओएच, यदि आप 3.5 के लिए लक्षित करते हैं और केवल 2.0 पर चलते हैं, तो यह एक समस्या होगी। –

+0

ब्रायन, आपको यह नहीं मिला। यदि आप 2.0 ढांचे को लक्षित करते हैं, और .NET 3.5 लाइब्रेरी का उपयोग करते हैं तो COMPILER एक त्रुटि की रिपोर्ट करेगा क्योंकि उस लाइब्रेरी को 2.0 फ्रेमवर्क वातावरण में उपयोग नहीं किया जा सकता है, इसलिए वास्तव में आपके एप्लिकेशन को तैनात करने और इसे रनटाइम पर विफल होने के लिए आपकी सुरक्षा करना। चूंकि आप 2.0 फ्रेमवर्क को लक्षित कर रहे हैं, इसलिए कंपिलर आपको सुरक्षा देता है, उदाहरण के लिए, फैंसी लिंक कॉल का उपयोग करना। जब आप एक संस्करण को लक्षित करते हैं तो आप कह रहे हैं कि आप अपने संस्करण को उस संस्करण या वरिष्ठ में काम करने की उम्मीद करते हैं, इसलिए आप पुस्तकालयों का उपयोग नहीं कर सकते हैं जो ढांचे के बाद के संस्करणों में शामिल हैं। –

0

3.5 में कक्षाएं 2.0 हैं। उदाहरण के लिए Func < ...>। यदि आप 2.0 का लक्ष्य रखते हैं, तो आप उनका उपयोग नहीं कर सकते हैं।

1

मुझे कोई भी नहीं मिला है। एक स्पष्ट नुकसान, यदि आपको 3.5 विशिष्ट विशेषताओं की आवश्यकता नहीं है, तो 3.5 कोड आधार छोटा है और इसलिए संभव है, हालांकि कुछ बग आसपास छिपी हुई है।

2

.NET 2.0 और .NET 3.5 के संबंध में याद रखने के लिए दो चीज़ें हैं।

  1. .NET Framework 3.5 केवल कुछ पुस्तकालय हैं जो .NET 2.0 के शीर्ष पर चलते हैं।
  2. जब विजुअल स्टूडियो 2008 में विकसित करने और .NET 2.0 को लक्षित आप अभी भी इस तरह के विस्तार के तरीके के रूप में कुछ सी # 3.0 भाषा सुविधाओं का उपयोग कर सकते हैं क्योंकि वे सी # 3.0 (या .NET 3.5) संकलक की एक विशेषता वास्तव में कर रहे हैं। यह लिंक देखें: http://www.codethinked.com/post/2008/02/Using-Extension-Methods-in-net-20.aspx
1

यदि आप ढांचे के उस संस्करण से किसी वर्ग का उपयोग नहीं कर रहे हैं तो 3.5 ढांचे को संकलित करने का कोई फायदा नहीं है।

1

मुझे लगता है कि आप अपने संकलन के लिए .NET 3.5 फ्रेमवर्क को निशाना बनाने का मतलब होगा? तो फिर, तो के रूप में अन्य लोगों ने कहा मुझे नहीं लगता कि आप ज्यादा अंतर नहीं दिखाई देगा।

हालांकि, अगर आप अद्यतन कम्पाइलरों के उपयोग के बारे में बात कर रहे हैं तो वहाँ विभिन्न परिवर्तन कर रहे हैं और निम्न लिंक पर दोनों सी # और VB के लिए वर्णित परिवर्तन को तोड़ने:

1

मेरा मानना ​​है कि विजुअल स्टूडियो के प्रत्येक संस्करण के साथ एक अलग कंपाइलर जहाज। उदाहरण के लिए विजुअल स्टूडियो 2005 और सी # 3.0 के साथ भेजे गए सी # 2.0 कंपाइलर के मामले में विजुअल स्टूडियो 2008 के साथ भेज दिया गया है। आप जिस विजुअल स्टूडियो का उपयोग करते हैं उसके आधार पर आप एक अलग कंपाइलर के साथ समाप्त होते हैं।

एक ढांचे को लक्षित करना विशेष रूप से संकलन प्रक्रिया के दौरान आप जिस ढांचे को लक्षित करना चाहते हैं उसका संदर्भ है; लक्ष्यीकरण ढांचे विजुअल स्टूडियो 2008 की एक नई सुविधा है। उदाहरण के लिए, मुझे विजुअल स्टूडियो 2008 में एक समाधान खोलना चाहिए और .Net का लक्ष्य v2.0 होना चाहिए। नतीजा यह होगा कि मेरे पास उस संकलन के दौरान 3.0 या 3.5 .NET सुविधाओं में से कोई भी उपलब्ध नहीं होगा, उदाहरण के लिए WPF।

1

यदि आपका .NET असेंबली .NET 3.5 को लक्षित करता है, परिणामी एप्लिकेशन .NET 3.5 पुस्तकालयों की आवश्यकता और आवश्यकता होगी, और यही वह है। ये पुस्तकालय .NET 2.0 ढांचे में पाए गए कई अतिरिक्त वर्गीकृत के साथ आते हैं, इसलिए उन पुस्तकालयों को लक्षित करने का लाभ होगा।

यदि आप सी # 3.0 संकलक शिपिंग के साथ सी # कोड संकलित करते हैं उदा। विजुअल स्टूडियो 2008 और .NET 3.5, के लिए उपयुक्त है लेकिन आपके असेंबली लक्ष्य .NET 2.0 है, आपको अभी भी नियमित .NET 2.0 लाइब्रेरी की आवश्यकता होगी, और इसके बावजूद वास्तव में कुछ .NET 3.5 कंपाइलर सुविधाओं का उपयोग करें, उनमें से कई विशेषताएं केवल अंत में .NET 2.0 कोड का उपयोग कर रही हैं। इसके बारे में यहां और पढ़ें: http://weblogs.asp.net/shahar/archive/2008/01/23/use-c-3-features-from-c-2-and-net-2-0-code.aspx

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