如何诊断Resharper Unit Test Runner"无法加载一个或多个请求的类型"错误

Jac*_*eja 11 .net resharper unit-testing visual-studio visual-studio-2015

当我使用Resharper Unit Test Runner运行或调试我的单元测试时,我弹出一个对话框,说"单元测试运行器无法运行测试 - 无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息" :

在此输入图像描述

现在我尝试了重建,清理,手动删除文件夹,可视工作室重启,硬件重启,查看输出/调试窗口,以及晚上启用R#"内部"模式,以便我可以看到它的日志(写入%Temp%\ JetLogs据我了解),但没有一个解决它或提供任何线索.我试过"调试"R#但是在调试器遇到任何异常之前,对话框再次弹出.

我该怎么解决这个问题呢?这非常烦人!

我正在使用:

  • R#2016.1.2
  • NUnit 3.2.1
  • Visual Studio 2015 Update 2(14.0.25123)

Jac*_*eja 17

我最后用一种相当简单的方法诊断出来:

我将单元测试程序集从类库转换为控制台应用程序,并添加了一个Main入口点(如下所示).在那里,我迭代所有的程序集类型,我希望这将导致所有类型和依赖程序集被加载,这将揭示任何加载异常.是的,它有效.它很快就抛出了一个System.Reflection.ReflectionTypeLoadException错误消息"无法加载一个或多个......"的规范来源.在调试器中,我可以检查LoaderExceptions告诉我底层问题是什么的属性.

public class Program
{ 
    public static void Main(string[] args)
    {
        var types = Assembly.GetExecutingAssembly().GetTypes();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您会认为Resharper Test Runner可以捕获该异常,并允许您在不必自己编写的情况下检索它. (5认同)

nim*_*att 11

Schneider的答案会很好用,但如果有更多懒人,你可以LoaderExceptions更快地检查PowerShell.

[Reflection.Assembly]::LoadFile('<path to your assembly>') | % {$_.GetTypes()}
$Error[0].Exception.InnerException.LoaderExceptions
Run Code Online (Sandbox Code Playgroud)

  • `<程序集的路径>`必须是绝对路径 (2认同)