الحصول على "ComponentActivatorexception" باستخدام Windsor Castle من تطبيق .NET 4.0 باستخدام مكون .NET 2.0

StackOverflow https://stackoverflow.com/questions/2276033

سؤال

لديّ تطبيق يتم تطويره في VS2010 ، ويستخدم Castle-Windsor IOC ، من خلال ملف التكوين.

أحد المكونات التي أقوم بتسجيلها ، تم تطويرها أيضًا في VS2010 ، المراجع مكون .NET 2.0 (LEADTOOLS) ، لذا فإن إعادة تجميع مشروع 2.0 ليس خيارًا. عندما يتم تسجيل تسجيل مكون الالتفاف ، يتم رفع "ComponentActivatoRexception" ، والذي يلف "نظام. typeinitializationException" ، والذي بدوره يلف "system.io.fileloadexception" مع رسالة من "تجميع الوضع المختلط مبني على الإصدار" v2 "v2 .0.50727 'من وقت التشغيل ولا يمكن تحميله في وقت التشغيل 4.0 دون معلومات تكوين إضافية. "

لقد أضفت إعلان وقت التشغيل إلى ملف تكوين التطبيق ، على النحو التالي:

<!-- useLegacyV2RuntimeActivationPolicy is needed for LEADTools-->
<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  <supportedRuntime version="v2.0.50727" />
</startup>

هذا يعمل بشكل جيد إذا لم يتم تسجيل مكون التفاف في وندسور ، ومع ذلك ، يبدو أنه يتجاهل التوجيهات على خلاف ذلك.

شكرًا!

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

المحلول 2

كانت المشكلة بسبب استخدام "تحديد" S و "If" ضمن ملف التكوين ، لكل وثائق Microkernel. سمحت إزالة جميع هذه العناصر من ملف App.Config للمكونات بتثبيت ، سواء تم تسجيلها في حاوية Windsor أم لا.

نصائح أخرى

أفترض أنك تستخدم التسجيل عبر XML؟

ماذا يحدث إذا قمت بتسجيل المكون في الكود؟

هل يمكنك محاولة إعادة إنتاج المشكلة دون خطأ؟

يتصل Type.GetType("assembly qualified name of the type from .net 2.0 assembly");

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