سؤال

أثناء تحويل مشروع يستخدم SlimDX ، وبالتالي يحتوي على رمز غير مُدار ، إلى .NET 4.0 ، واجهت الخطأ التالي:

تم تصميم مجموعة الوضع المختلط مقابل إصدار "v2.0.50727" من وقت التشغيل ولا يمكن تحميله في وقت التشغيل 4.0 دون معلومات تكوين إضافية.

أعطاني Googling حول الحل ، وهو إضافة هذا إلى تكوين التطبيقات:

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

سؤالي هو ، ما هو useLegacyV2RuntimeActivationPolicy عمل؟ لا يمكنني العثور على أي وثائق حول هذا الموضوع.

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

المحلول

بعد قليل من الوقت (والمزيد من البحث) ، وجدت إدخال المدونة هذا بقلم جومو فيشر.

واحدة من المشكلات الأخيرة التي رأيناها هي أنه بسبب دعم أوقات التشغيل جنبًا إلى جنب ، غيرت .NET 4.0 الطريقة التي يرتبط بها التجميعات القديمة المختلطة. هذه التجميعات ، على سبيل المثال ، تلك التي يتم تجميعها من C ++ CLI. تجميعات DirectX المتاحة حاليًا هي الوضع المختلط. إذا رأيت رسالة كهذه ، فأنت تعلم أنك واجهت المشكلة:

تم تصميم تجميع الوضع المختلط مقابل إصدار "v1.1.4322" من وقت التشغيل ولا يمكن تحميله في وقت التشغيل 4.0 دون معلومات تكوين إضافية.

قص

الأخبار السارة للتطبيقات هي أن لديك خيار العودة إلى .NET 2.0 ERA ملزمة لهذه التجميعات عن طريق تعيين علامة app.config مثل SO:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0"/>
</startup>

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

نصائح أخرى

إليك تفسير كتبته مؤخرًا للمساعدة في فراغ المعلومات حول هذه السمة.http://www.marklio.com/marklio/permalink،guid (رابط آلة أرشيف الإنترنت)

لاقتباس البتات الأكثر صلة:

تثبيت .NET] V4 هو "غير مؤكد". يجب ألا يغير سلوك المكونات الموجودة عند تثبيته.

تتيح لك السمة uselegacyv2runtimeactivationpolicy أساسًا أن تقول: "لدي بعض التبعيات على واجهات برمجة تطبيقات Shim Legacy. يرجى جعلهم يعملون بالطريقة التي اعتادوا عليها فيما يتعلق بوقت التشغيل المختار. "

لماذا لا نجعل هذا السلوك الافتراضي؟ قد تجادل بأن هذا السلوك أكثر توافقًا ، ويجعل رمز النقل من الإصدارات السابقة أسهل بكثير. إذا كنت ستتذكر ، فلا يمكن أن يكون هذا هو السلوك الافتراضي لأنه سيجعل تثبيت V4 effectful ، والذي يمكن أن يكسر التطبيقات الموجودة على جهازك.

تشرح المنشور الكامل هذا بمزيد من التفصيل. في RTM ، يجب أن تكون مستندات MSDN على هذا أفضل.

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