2011-09-20 104 views
10

你能告诉我一个排除故障的方法System.TypeLoadException如何解决:System.TypeLoadException?

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

当我运行我的单元测试时,会引发这个异常。他们失败,因为此异常:

详情:

试验方法 MyErrorHandler.Test.MyTest.Parse_RecievesValidMessage_ReturnsArray 抛出异常:System.TypeLoadException:未能从程序集加载类型 “MyTestNameSpace“MyTestAssemblyName。测试, Version = 1.0.0.0,Culture = neutral,PublicKeyToken = Somenumber。

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

+1

什么触发异常? – Gabe

+0

什么是完全例外? –

+0

请参阅我的补充内容。 – pencilCake

回答

2

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

编辑:也检查卫星程序集(由程序集引用的类型加载器加载失败)是可达的。

0

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

2

您可以尝试从Debug - > Tools - > Exceptions中打开'抛出异常时中断',然后单击Thrown列中的所有复选框。当你重新运行你的测试时,你应该能够确切地看到抛出这个异常的位置。

0

恩......这完全是我的错。

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

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

11

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

+4

+1谢谢你,这只是在很多头部划伤之后挽救了我的尾巴! –