在我们的应用程序中(包含65个项目的解决方案),所有引用的程序集都会在运行时分析是否存在Ninject模块(也有一些筛选)。稍后,这些模块被加载到Ninject内核中,并且每个模块为内核声明绑定。
我们采用了一个加载器,将引用的程序集以反射方式加载到单独的程序集中。与Ninject可以从目录中加载程序集的方式不同的是,目录中可能包含不应该被加载的模块程序集。并且,在最开始时,并非所有引用的程序集都已加载。
问题在于loader(由Sacha Barber提供)不能加载某些程序集。
我们采用了一个加载器,将引用的程序集以反射方式加载到单独的程序集中。与Ninject可以从目录中加载程序集的方式不同的是,目录中可能包含不应该被加载的模块程序集。并且,在最开始时,并非所有引用的程序集都已加载。
问题在于loader(由Sacha Barber提供)不能加载某些程序集。
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information
和一个条目的LoaderExceptions
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 检查这些程序集没有问题。
此时,我真的很迷茫,不知道如何解决这个问题。
非常感谢任何帮助。
谢谢