19

我收到“异常详细信息: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:附加信息,当我运行重建操作时,所有过程都正确生成,没有错误。

4

3 回答 3

27

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

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
    }
}
于 2011-05-22T07:48:35.340 回答
4

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

于 2016-05-17T12:06:29.730 回答
2

DLL是你创建的吗?你的目标是哪个框架?

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

Unity 论坛中有很多类似的问题。

也许您已经有了解决方案,但这可以帮助将来需要它的任何人(就像我需要的那样)。

最好的祝福!

于 2014-05-17T23:28:42.503 回答