获取程序集中的类型(错误:System.Reflection.ReflectionTypeLoadException)

我收到类型exception“Exception Details:System.Reflection.ReflectionTypeLoadException:无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息。” 使用以下代码:

public IEnumerable FindClassesOfType(Type assignTypeFrom, IEnumerable assemblies, bool onlyConcreteClasses = true) { foreach(var a in assemblies) { foreach (var t in a.GetTypes()) 

我需要获取每个程序集中定义的类型,但似乎无法生成它。

我已经通过删除dll,清理解决方案,重新加载解决方案等执行了与错误的程序集创建相关的所有典型过程,但没有发生任何事情。

我想请求想法,以通过找到一种方法来检索错误的更多信息,或者找到组件产生问题或类似的东西来解决这个问题。 当前的exception消息是如此模糊,以至于意识到哪个是问题。

非常感谢。 ps:附加信息,当我运行重建操作时,所有进程都正确生成且没有错误。

错误消息表明您需要的一切,真的:

 try { // your code } catch (ReflectionTypeLoadException ex) { // now look at ex.LoaderExceptions - this is an Exception[], so: foreach(Exception inner in ex.LoaderExceptions) { // write details of "inner", in particular inner.Message } } 

DLL是否由您创建? 您定位的是哪个框架?

我刚才遇到了这个问题。 即使用框架3.5(使用CLR2)编译我的外部库,也不能导入DLL。 错误与您的错误相同。 我已经解决了我的问题重建我的libs目标框架3.0,现在似乎工作。 我将我的dll留在Plugins文件夹中没有问题。

Unity论坛中存在许多类似的问题。

也许你已经有了解决方案,但这可以帮助将来需要它的人(比如我需要)。

最好的祝福!

如果使用entity framework,请检查Web.Config中的版本是否与项目中引用的版本相同。