首页 文章

我该如何排除故障:System.TypeLoadException?

提问于
浏览
11

你能告诉我一个解决 System.TypeLoadException 问题的方法吗?

我在我的解决方案中的现有项目中遇到此异常,我在同一解决方案中从单元测试项目中引用该项目 .

当我运行单元测试时抛出此异常 . 他们因为这个例外而失败:

细节:

测试方法MyErrorHandler.Test.MyTest.Parse_RecievesValidMessage_ReturnsArray引发异常:System.TypeLoadException:无法从程序集'MyTestAssemblyName.Test,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = Somenumber加载类型'MyTestNameSpace' .

我应该检查什么或我应该从哪里开始调查?

5 回答

  • 12

    在异常消息中,或者在InnerException属性中,您可能会找到所请求的类型,以及完全限定的名称,版本,程序集 . 检查是否可以从应用程序目录访问给定的程序集 . 可访问的含义在应用程序目录或应用程序的私有探测路径中 .

    编辑:还检查可以访问的附属程序集(由程序集引用类型加载程序加载失败) .

  • 1

    抛出此异常的一种情况是执行程序集与具有给定类型的程序集具有相同的名称 . 例如,如果您正在运行 MyApp.exe 且类型位于 MyApp.dll 中,则CLR将假定该类型应位于 MyApp.exe 中 . 解决方案是重命名其中一个程序集 .

  • 0

    您可以尝试在Debug - > Tools - > Exceptions中单击“抛出异常时中断”,然后单击“Thrown”列中的所有复选框 . 当您重新运行测试时,您应该能够确切地看到抛出此异常的位置 .

  • 2

    嗯......这完全是我的坏事 .

    我给出了一个错误的程序集名称,导致bin文件夹中缺少DLL .

    感谢我的伴侣,他指着我检查bin文件夹 . 在检查添加的参考文献的“路径”后,我注意到它正在寻找一个完全不同的地方 .

  • 2

    看看内部异常 . 这通常发生在静态构造函数抛出异常时 .

相关问题