如何排除故障:system . typeloadeexception

本文关键字:故障 system typeloadeexception 排除 何排除 | 更新日期: 2023-09-27 18:09:03

你能告诉我解决系统故障的方法吗?TypeLoadException ?

对于我的解决方案中的现有项目,我从同一解决方案中的单元测试项目中引用了此异常。

在运行单元测试时抛出此异常。由于这个异常,它们失败了:

细节:

测试方法MyErrorHandler.Test.MyTest.Parse_RecievesValidMessage_ReturnsArray抛出异常:System。typeloadeexception:无法加载类型从程序集"MyTestAssemblyName"中获取"MyTestNameSpace"。测试中,版本=1.0.0.0,文化=中性,PublicKeyToken= someenumber .

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

如何排除故障:system . typeloadeexception

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

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

编辑:还要检查附属程序集(由类型加载器加载失败的程序集引用)是否可达。

您可以尝试从调试->工具->异常中打开'当抛出异常时',并单击抛出列中的所有复选框。当您重新运行测试时,您应该能够准确地看到抛出这个异常的位置。

嗯…完全是我的错。

我给了一个错误的程序集名称,导致在bin文件夹中丢失DLL。

多亏了我的同伴,他让我去检查bin文件夹。在检查了添加的引用的"路径"之后,我注意到它正在寻找一个完全不同的地方。

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