it-swarm.dev

هل من الممكن تشغيل تطبيق .NET 4.5 على XP؟

أولاً ، لقد قرأت ما يلي:

لذلك ، من آخر رمز نقطي ، أعتقد حقًا أنه لا توجد طريقة للتغلب على ذلك ، لكن كان عليّ معرفة ما إذا كان بإمكاني الحصول على إجابة محددة لأن فريقي يرغب في الترقية من .NET 4.0 إلى .NET 4.5. ومع ذلك ، علينا أن ندعم XP.

هل هناك إمكانية للذهاب إلى .NET 4.5 إذا كنا نريد دعم XP؟

الشيء الوحيد الذي يمكنني التفكير فيه هو إنشاء حلين منفصلين ، ولكن بعد ذلك سيتعين على قواعد الكود أن تتباعد إذا استخدمنا ميزات .NET 4.5.

لذلك ، أبحث عن بعض الحلول الرائعة التي لم أتمكن من العثور عليها والبعض الآخر ربما يعرفها بالفعل.

84
Justin Pihony

أتردد في نشر هذه الإجابة ، فهي في الواقع ممكنة تقنيًا لكنها لا تعمل بشكل جيد في الممارسة. لم يتم تغيير أرقام إصدار CLR وتجميعات إطار العمل الأساسية في 4.5. ما زلت تستهدف v4.0.30319 من CLR وأرقام إصدار التجميع إطار لا تزال 4.0.0.0. الشيء الوحيد الذي يميز بيان التجميع عندما تنظر إليه باستخدام أداة فك تجميع مثل ildasm.exe هو وجود سمة [TargetFramework] تقول أن هناك حاجة إلى 4.5 ، والتي يجب تغييرها. ليس في الواقع بهذه السهولة ، ينبعث من المترجم.

الفارق الأكبر هو أن ذلك غير مرئي ، قامت Microsoft بتغيير طال انتظاره في الرأس القابل للتنفيذ للتجميعات. الذي يحدد إصدار Windows القابل للتنفيذ المتوافق معه. ينتمي XP إلى جيل سابق من Windows ، بدأ مع Windows 2000. رقم الإصدار الرئيسي هو 5. كان Vista هو بداية الجيل الحالي ، الإصدار الرئيسي رقم 6.

قام برنامج التحويل البرمجي .NET دائمًا بتحديد الحد الأدنى لرقم الإصدار ليكون 4.00 ، إصدار Windows NT و Windows 9x. يمكنك رؤية ذلك عن طريق تشغيل dumpbin.exe/رؤوس على التجميع. عينة الإخراج يشبه هذا:

OPTIONAL HEADER VALUES
             10B magic # (PE32)
            ...
            4.00 operating system version
            0.00 image version
            4.00 subsystem version              // <=== here!!
               0 Win32 version
            ...

الجديد في .NET 4.5 هو أن المترجمين يغيرون إصدار النظام الفرعي هذا إلى 6.00. تغيير كان مبالغًا فيه إلى حد كبير نظرًا لأن نظام التشغيل Windows ينتبه إلى هذا الرقم ، إلى جانب التحقق مما إذا كان صغيرًا بدرجة كافية. يعمل أيضًا على تشغيل ميزات appcompat لأنه يفترض أنه تمت كتابة البرنامج للعمل على الإصدارات القديمة من Windows. تتسبب هذه الميزات في حدوث مشكلة ، خاصةً أن الطريقة التي يكمن بها Windows حول حجم الإطار في Aero مزعجة. يتوقف عن الكذب حول الحدود السميكة لإطار Aero عندما يرى أنه تم تصميم البرنامج ليتم تشغيله على إصدار Windows يحتوي على Aero.

يمكنك تغيير رقم الإصدار هذا وإعادة تعيينه إلى 4.00 عن طريق تشغيل Editbin.exe على التجميعات الخاصة بك مع خيار/النظام الفرعي. هذه الإجابة تُظهر نموذج حدث postbuild.

ومع ذلك ، يتعلق الأمر بمكان انتهاء الأخبار الجيدة ، المشكلة الكبيرة هي أن .NET 4.5 غير متوافق مع .NET 4.0. إلى حد بعيد أكبر تعليق هو أنه تم نقل الطبقات من جمعية إلى أخرى. وعلى الأخص ، حدث ذلك للسمة [ملحق]. سابقًا في System.Core.dll ، تم نقله إلى Mscorlib.dll في .NET 4.5. هذا kaboom يعمل على XP إذا أعلنت عن طرق التمديد الخاصة بك ، يقول البرنامج الخاص بك للبحث في Mscorlib للسمة ، التي تم تمكينها بواسطة سمة [TypeForwardedTo] في إصدار .NET 4.5 من System.Core reference Assembly . ولكن ليس هناك عند تشغيل البرنامج على .NET 4.0

وبالطبع لا يوجد شيء يساعدك على التوقف عن استخدام الفئات والأساليب المتوفرة فقط على .NET 4.5. عند القيام بذلك ، سيفشل البرنامج مع TypeLoadException أو MissingMethodException عند تشغيله على 4.0

الهدف فقط 4.0 وجميع هذه المشاكل تختفي. أو قم بقطع هذا اللقطة وتوقف عن دعم XP ، وهو قرار تجاري لا يمكن للمبرمجين في كثير من الأحيان اتخاذه ، ولكن من المؤكد أنه يمكن تشجيعه من خلال الإشارة إلى المتاعب التي يسببها. بالطبع هناك تكلفة غير صفرية لدعم أنظمة التشغيل القديمة ، فقط جهد الاختبار كبير. إن توافق Windows ، وهو التكلفة التي لا يتم التعرف عليها غالبًا ، يعد أسطوريًا ، إلا إذا تمت الإشارة إليها. تقدم هذه التكلفة إلى العميل وهي تميل إلى اتخاذ القرار الصحيح بشكل أسرع بكثير :) ولكن لا يمكننا مساعدتك في ذلك.

183
Hans Passant

للأسف ، لا ، لا يمكنك تشغيل 4.5 برامج على XP.

والمشاركة ذات الصلة من تلك الصفحة الاتصال:

أرسلت بواسطة مايكروسوفت في 23/03/2012 في الساعة 10:39
شكرًا على التقرير. هذا السلوك حسب التصميم في .NET Framework 4.5 Beta. الحد الأدنى لأنظمة التشغيل المعتمدة هي Windows 7 و Windows Server 2008 SP2 و Windows Server 2008 R2 SP1. Windows XP ليس نظام تشغيل مدعوم للإصدار التجريبي.

21
Oztaco

أسقط مشروع Mono Windows XP الدعم و "نسيت" ذكره. على الرغم من أنهم ما زالوا يدعون أن Windows XP SP2 هو الحد الأدنى للإصدار المدعوم ، إلا أنه في الواقع Windows Vista.

كان الإصدار الأخير من Mono لدعم Windows XP هو 3.2.3.

7
guest

جرب مونو:

http://www.go-mono.com/mono-downloads/download.html

يعمل هذا التنزيل على جميع إصدارات Windows XP و 2003 و Vista و Windows 7.

7
luiseduardohd

الإصدار الأخير لدعم windows XP (SP3) أحادي-4.3.2.467-gtksharp-2.12.30.1-win32-0.msi ولا يحل محل .NET 4.5 ولكن قد يكون موضع اهتمام لبعض التطبيقات.

نرى هناك: https://download.mono-project.com/archive/4.3.2/windows-installer/

4
Sandy