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

时间:2011-05-22 07:26:31

标签: c# asp.net-mvc entity-framework system.reflection

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:22)

错误消息说明了您需要的一切:

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
    }
}

答案 1 :(得分:4)

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

答案 2 :(得分:2)

您是否创建了DLL?您要定位哪个框架?

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

Unity forums中有很多类似的问题。

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

最诚挚的问候!