在我们的应用程序(包含 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
一个条目:
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 检查它们时,这些程序集没有任何问题(显然)。
在这一点上,我真的很迷茫,不知道如何解决这个问题。
任何帮助表示赞赏。
谢谢