您能告诉我一种解决 System.TypeLoadException 问题的方法吗?
我对我的解决方案中的现有项目有异常,我在同一解决方案中从单元测试项目中引用。
当我运行单元测试时抛出此异常。他们因为这个例外而失败:
详细说明:
测试方法 MyErrorHandler.Test.MyTest.Parse_RecievesValidMessage_ReturnsArray 抛出异常:System.TypeLoadException:无法加载类型 程序集'MyTestAssemblyName.Test中的'MyTestNameSpace', Version = 1.0.0.0,Culture = neutral,PublicKeyToken = Somenumber。
我应该检查什么或应该从哪里开始调查?
答案 0 :(得分:12)
抛出此异常的一种情况是,执行程序集与具有给定类型的程序集具有相同的名称。例如,如果您运行 MyApp.exe 且类型位于 MyApp.dll 中,则CLR将假定该类型应位于 MyApp.exe < / strong>即可。解决方案是重命名其中一个程序集。
答案 1 :(得分:3)
在异常消息中,或者在InnerException属性中,您可能会发现所请求的类型是什么,具有完全限定的名称,版本,程序集。检查是否可以从应用程序目录访问给定的程序集。可访问的含义在应用程序目录或应用程序的私有探测路径中。
编辑:还检查可以到达的附属程序集(由程序集引用类型加载程序加载失败)。
答案 2 :(得分:2)
您可以尝试从Debug中打开“抛出异常时中断” - &gt;工具 - &gt;例外并单击Thrown列中的所有复选框。当您重新运行测试时,您应该能够确切地看到抛出此异常的位置。
答案 3 :(得分:1)
嗯......这完全是我的坏事。
我提供了一个错误的程序集名称,导致bin文件夹中缺少DLL。
感谢我的配偶,他指着我查看bin文件夹。在检查添加的参考文献的“路径”后,我注意到它正在寻找一个完全不同的地方。
答案 4 :(得分:0)
了解内部异常。当静态构造函数抛出异常时,通常会发生这种情况。