1

我有一个Visual Studio解决方案,我使用MSTest进行单元测试,并且想使用ReSharper Testrunner,因为我认为Visual Studio Test Explorer非常痛苦。我的整个解决方案都是为x64构建的,因为我有一些依赖程序集专门针对x64编译而不适用于x86。ReSharper Testrunner在x64上使用BadImageFormatException失败

我的单元测试在VS Test Explorer中运行良好,但在ReSharper Testrunner中失败。

以下异常被抛出,它击中单元测试的第一行之前的权利:

Unable to get type xxx.xxx.xxx. Error: System.BadImageFormatException: Die Datei oder Assembly "file:///D:\path\to\unit\test\project\bin\Debug\xxx.xxx.xxx.dll" oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.

很抱歉的例外,在德国之中。这只是一个'典型的'BadImageFormatException其中xxx.xxx.xxx是我单元测试项目的类型。 堆栈跟踪表明,异常正在从

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

我知道有关于计算器已经有很多类似的问题抛出,但我已经尝试过每一种可能的解决办法,我发现(无任何影响),因此,我认为我的问题在别的地方。

是我的尝试,到目前为止,检查:

  • 我双重检查在我的解决方案,每一个项目被编译到x64(甚至在释放模式) - everyhting似乎罚款
  • 默认处理器架构MSTest显式设置为x64(可能这就是为什么它与内置的测试资源管理器配合使用)
  • 尽管应该根据项目平台来决定,但我明确将平台设置为ReSharper Testrunner x64
  • 我甚至将ReSharper的单元测试设置修改为force在64位处理中执行单元测试
  • 在ReSharper设置中禁用了组件的Shadow-Copy(仅仅因为我非常沮丧,现在,并切换到审判&错误模式就在我开始创建这个问题)

有刺激性的测试运行罚款与测试资源管理器,但不与ReSharper的,虽然双方已设置为64位。我是否缺少需要修改的特定设置?或者,当将ReSharper与MSTest结合使用时,他们会遇到一些已知问题吗?我可能也会考虑使用nUnit,但我需要修改所有测试,所以最好还是留在MSTest中。


Additionaly有关版本和东西的一些信息(不知道它可能会有所帮助):

  • 的Visual Studio 2013高级版更新v12.0.30110.00 1
  • 的.NET Framework 4.5在解决方案中的每个项目上
  • ReSharper 8.2 C#Edition,Build 8.2.0。2160

回答

1

经过一些额外的研究,我在ReSharper的社区发现了一个similar post,这表明了ReSharper被配置为创建和元数据使用每个默认的应用程序,这是配置为使用的testsettings文件x64架构。我必须在解决方案(位于解决方案项目下)上创建自定义TestSettings文件,将其设置为强制以x64运行,然后编辑ReSharper设置以使用此自定义TestSettings文件而不是默认文件。我仍然不知道为什么ReSharper不使用为MSTest指定的默认处理器体系结构,也忽略了我在ReSharper设置中明确指定的设置。

但无论如何它现在工作。

相关问题