سؤال

هل هناك أي مزايا للتجميع لـ .NET Framework 3.5 بدلاً من 2.0؟

على سبيل المثال، استهلاك أقل للذاكرة، وبدء تشغيل أسرع، وأداء أفضل...

شخصياً لا أعتقد ذلك، ربما فاتني شيء ما.

يحرر:بالطبع هناك المزيد من الميزات في إطار العمل 3.5، ولكن هذه ليست محور هذا السؤال.

تحرير 2:يبدو أنه لا توجد مزايا.

تحرير 3:نعم أقصد استهداف الإطار.لقد قمت بتثبيت أحدث إصدار 3.5 SP1 وVS 2008، فما الفرق بين التجميع باستخدام إطار العمل واستهدافه؟يمكنني استهداف إطار العمل في خيارات المشروع ولكن كيف يمكنني "ترجمة" إصدار إطار عمل محدد؟لم أكن أعرف أن هناك فرقا.

تحرير 4:لذلك نحن نتفق الآن على أنه لا توجد مزايا.

شكرا لآراءكم

هل كانت مفيدة؟

المحلول

هناك فرق بين التجميع والاستهداف.

من المحتمل أن يمنحك تجميع التعليمات البرمجية باستخدام مترجم C# 3.0 (على سبيل المثال) تعزيزًا في الأداء (قليل جدًا على أي حال) حيث تم تضمين بعض التحسينات لكود IL الذي تم إنشاؤه.كما يسمح لك باستخدام بعض الميزات الجديدة مثل الخصائص التلقائية أو تعبيرات لامدا.

سيضمن استهداف إطار عمل معين عمل التجميع الخاص بك لهذا الإطار (والإصدارات الأحدث) وسيفشل إذا كنت تستهدف الإصدار 2.0 وتستخدم مكتبة 3.5.لن تكون هناك أي تحسينات في الأداء مرتبطة بشكل مباشر بذلك إلا إذا قمت باستبدال فئة من إطار عمل بفئة أخرى "أسرع".على سبيل المثال، لن يسمح لك استهداف .NET 1.1 باستخدام الأدوية العامة وبالتالي سيتعين عليك استخدام ArrayList وهي أبطأ بكثير من القائمة (بسبب الملاكمة والفتح).

نصائح أخرى

هناك شيئان يجب تذكرهما فيما يتعلق بـ .NET 2.0 و.NET 3.5.

  1. يعد .NET Framework 3.5 مجرد عدد قليل من المكتبات التي تعمل فوق .NET 2.0.
  2. عند التطوير في Visual Studio 2008 واستهداف .NET 2.0، لا يزال بإمكانك استخدام بعض ميزات لغة C# 3.0 مثل أساليب الامتداد نظرًا لأنها في الواقع إحدى ميزات برنامج التحويل البرمجي C# 3.0 (أو .NET 3.5).انظر هذا الرابط: http://www.codethinked.com/post/2008/02/Using-Extension-Methods-in-net-20.aspx

لم أجد أي.واضح عيب, ، إذا كنت لا تحتاج إلى الميزات المحددة 3.5، هو أن قاعدة التعليمات البرمجية 3.5 أصغر سنًا وبالتالي فمن المحتمل، وإن كان من غير المحتمل، أن يكون هناك بعض الأخطاء الكامنة.

ليس هناك فائدة من التحويل البرمجي إلى إطار العمل 3.5 إذا كنت لا تستخدم أي فئات من هذا الإصدار من إطار العمل.

أفترض أنك يجب أن تقصد استهداف إطار عمل .NET 3.5 للتجميع الخاص بك؟إذا كان الأمر كذلك، فكما قال الآخرون، لا أعتقد أنك سترى فرقًا كبيرًا.

ومع ذلك، إذا كنت تتحدث عن استخدام المترجمين المحدثين، فهناك العديد من التغييرات والتغييرات الفاصلة الموضحة لكل من C# وVB على الروابط التالية:

أعتقد أن هناك مترجمًا مختلفًا يأتي مع كل إصدار من Visual Studio.على سبيل المثال، في حالة C#، تم شحن المترجم 2.0 مع Visual Studio 2005 وC# 3.0 الذي تم شحنه مع Visual Studio 2008.اعتمادًا على إصدار Visual Studio الذي تستخدمه، سينتهي بك الأمر باستخدام مترجم مختلف.

يشير استهداف إطار العمل على وجه التحديد إلى إصدار إطار العمل الذي ترغب في استهدافه أثناء عملية التجميع؛تعد أطر الاستهداف ميزة جديدة في Visual Studio 2008.على سبيل المثال، يمكن أن يكون لدي حل مفتوح في Visual Studio 2008 وأستهدف الإصدار 2.0 من .Net.ستكون النتيجة أنني لن أتوفر على أي من ميزات .Net 3.0 أو 3.5 أثناء هذا التجميع، على سبيل المثال WPF.

إذا كان تجميع .NET الخاص بك يستهدف .NET 3.5، فسيبحث التطبيق الناتج عن مكتبات .NET 3.5 ويطلبها، وهذا كل ما في الأمر.تأتي هذه المكتبات مع العديد من المصنفات الإضافية غير الموجودة في إطار عمل .NET 2.0، لذلك ستكون هذه ميزة لاستهداف تلك المكتبات.

ومع ذلك، إذا قمت بتجميع كود C# باستخدام مترجم C# 3.0 الذي يتم شحنه على سبيل المثال.Visual Studio 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

3.5 لديه فئات 2.0 لا.Func<...> على سبيل المثال.إذا كنت تهدف إلى 2.0، فلا يمكنك استخدامها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top