C# 如何排除故障:System.TypeLoadException?

C# 如何排除故障:System.TypeLoadException?,c#,.net,reference,assemblies,typeloadexception,C#,.net,Reference,Assemblies,Typeloadexception,您能告诉我一种排除系统.TypeLoadException故障的方法吗 对于我的解决方案中的现有项目,我有一个例外,我引用了同一解决方案中的单元测试项目 当我运行单元测试时,会抛出此验证。由于以下例外情况,它们失败: 详情: 试验方法 MyErrorHandler.Test.MyTest.Parse_接收有效消息_返回数组 引发异常:System.TypeLoadException:无法加载类型 程序集“MyTestAssemblyName.Test”中的“MyTestNameSpace”, V

您能告诉我一种排除系统.TypeLoadException故障的方法吗

对于我的解决方案中的现有项目,我有一个例外,我引用了同一解决方案中的单元测试项目

当我运行单元测试时,会抛出此验证。由于以下例外情况,它们失败:

详情:

试验方法 MyErrorHandler.Test.MyTest.Parse_接收有效消息_返回数组 引发异常:System.TypeLoadException:无法加载类型 程序集“MyTestAssemblyName.Test”中的“MyTestNameSpace”, Version=1.0.0.0,Culture=neutral,PublicKeyToken=Somenumber


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

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


编辑:还要检查附属程序集(由类型加载程序未能加载的程序集引用)是否可访问。

查看内部异常。当静态构造函数抛出异常时通常会发生这种情况。

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

嗯。。。这完全是我的错

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


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

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

请参阅我的新增内容。您是否有一个配置文件,该文件通过类型的全名引用该类型;比如说一些国际奥委会的容器或类似的东西?+1谢谢你,这刚刚救了我的尾巴,我费了好大劲才抓到它!同上。如果没有其他内容,则对.dll和.exe使用相同的名称将导致覆盖.dll的.pdb。我只需在库中添加一个“Lib”后缀,或者更好的做法是在.exe名称中添加一个“Mgr”后缀。