0

VS2010 で開発されているアプリケーションがあり、構成ファイルを介して Castle-Windsor IoC を利用しています。

私が登録しているコンポーネントの 1 つは、これも VS2010 で開発されたもので、.net 2.0 コンポーネント (LeadTools) を参照しているため、2.0 プロジェクトを再コンパイルすることはできません。ラッピング コンポーネントの登録が完了すると、「ComponentActivatorException」が発生し、「System.TypeInitializationException」がラップされ、「System.IO.FileLoadException」がラップされ、「混合モード アセンブリはバージョン '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>

これは、ラッピング コンポーネントが Windsor に登録されていない場合は正常に機能しますが、それ以外の場合はディレクティブを無視しているように見えます。

ありがとう!

4

2 に答える 2

0

XML経由の登録を使用していると思いますか?

コードでコンポーネントを登録するとどうなりますか?

エラーなしで問題を再現できますか?

電話Type.GetType("assembly qualified name of the type from .net 2.0 assembly");

于 2010-02-17T00:22:57.360 に答える
0

この問題は、 MicroKernel のドキュメントによると、構成ファイル内で「define」と「if」を使用したことが原因でした。App.Config ファイルからこれらの要素をすべて削除すると、Windsor コンテナーに登録されているかどうかに関係なく、コンポーネントをインスタンス化できました。

于 2010-02-18T03:17:38.807 に答える