私たちのアプリケーション (65 プロジェクトのソリューション) では、参照されているすべてのアセンブリが実行時に分析され、Ninject モジュールの存在が確認されます (フィルタリングも適用されます)。モジュールは後で Ninject カーネルにロードされ、各モジュールはカーネルのバインディングを宣言します。
参照されたアセンブリをリフレクションのみのモードで別のアセンブリにロードするローダーを採用しました。Ninject がディレクトリからアセンブリをロードする方法との違いは、ディレクトリには、ロードしてはならないモジュールを含むアセンブリを含めることができるということです。また、最初は、参照されているすべてのアセンブリが読み込まれるわけではありません。
問題は、ローダー(Sacha Barber の功績) が一部のアセンブリをロードできないことです。
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information
とLoaderExceptions
1 つのエントリで:
Method 'BeforeLoad' in type 'Lekis.AppBase.Core.BLLBaseCore' from assembly 'AppBaseCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
ここにいくつかの「楽しい」事実があります:
- メソッド
BeforeLoad
は仮想であり、インターフェイス メソッドの実装です - 先週、ローダー例外は、別のメソッドには実装がありませんでした (そのメソッドは仮想ではありませんでした) と言っており、後で明示的に実装すると、メソッドが見つからないというメッセージが表示されました。
- 先週、アセンブリのターゲット フレームワーク
AppBaseCore
は .NET 3.5 で、3 つのアセンブリの読み込みに失敗しました - 現在、アセンブリのターゲット フレームワーク
AppBaseCore
は .NET 4 および 5 アセンブリの読み込みに失敗しました - それ以外の場合は、アプリケーションですべて問題ありません
ILSpy と ILDAsm でアセンブリをチェックしたところ、(明らかに) アセンブリに問題はありません。
この時点で、私は本当に迷っており、この問題に取り組む方法がわかりません。
どんな助けでも大歓迎です。
ありがとう