ReSharper Testrunner使用BadImageFormatException

时间:2016-08-03 09:43:14

标签: visual-studio unit-testing visual-studio-2013 resharper mstest

我有一个Visual Studio解决方案,我使用MSTest进行单元测试,并希望使用ReSharper Testrunner,因为我认为Visual Studio Test Explorer非常难以使用。我的整个解决方案是为x64构建的,因为我有一些专门为x64编译的依赖程序集,不适用于x86。

我的单元测试在VS Test Explorer中正常运行,但它们在ReSharper Testrunner中失败。

在点击单元测试的第一行之前,抛出以下异常:

  

无法输入 xxx.xxx.xxx 类型。错误:System.BadImageFormatException:Die Datei oder Assembly“file:/// D:\ path \ to \ unit \ test \ project \ bin \ Debug \ xxx.xxx.xxx .dll”oder eine Abhängigkeitdavonwurde nicht gefunden。 Es wurde versucht,eine Datei mit einem falschen格式zu laden。

很抱歉德语例外。它只是一个'典型的'BadImageFormatException,其中 xxx.xxx.xxx 是我的单元测试项目的类型。 Stacktrace表示从

抛出异常
  

Microsoft.VisualStudio.TestPlatform.MSTestFramework.TypeCache.LoadType(String typeName,String assemblyName)

我知道stackoverflow上已经有很多类似的问题了,但我已经尝试了所有可能的解决方案(没有任何影响),因此我认为我的问题出在其他地方。

到目前为止我尝试和检查的内容:

  • 我在我的解决方案中双重检查每个项目,编译为x64(即使在发布模式下) - 每个人看起来都很好
  • MSTest的默认处理器架构明确设置为x64(可能这就是它使用内置测试资源管理器的原因)
  • 虽然应根据项目平台决定,但我明确将ReSharper Testrunner中的平台设置为x64
  • 我甚至将ReSharper的单元测试设置修改为强制在64位进程中执行单元测试
  • 在ReSharper设置中禁用阴影复制程序集(因为我现在非常沮丧,在我开始创建此问题之前切换到试用和错误模式)

测试资源管理器测试运行正常,但ReSharper没有,但两者都已设置为x64,这令人恼火。我错过了我需要修改的具体设置吗?或者将ReSharper与MSTest结合使用时,它们是否存在一些已知问题?我也可以考虑使用nUnit,但我需要修改所有测试,所以最好还是留在MSTest。

另外一些关于版本和内容的信息(不知道它是否有帮助):

  • Visual Studio Premium 2013 v12.0.30110.00 Update 1
  • 解决方案中每个项目的.NET Framework 4.5
  • ReSharper 8.2 C#Edition,Build 8.2.0.2160

1 个答案:

答案 0 :(得分:1)

经过一些额外的研究后,我在ReSharper社区找到了similar post,表明ReSharper已配置为默认情况下在应用程序的MetaData中创建和使用testsettings文件,配置为使用x64架构。我必须在我的解决方案上创建一个自定义TestSettings文件(放在解决方案项下),将其设置为强制在x64中运行,然后编辑ReSharper设置以使用此自定义TestSettings文件而不是默认文件。我仍然不知道为什么ReSharper没有使用为MSTest指定的默认处理器架构,也忽略了我在ReSharper设置中明确指定的设置。

但无论如何它现在正在工作。