ReSharper Testrunner 在 x64 上失败并出现 BadImageFormatException

ReSharper Testrunner fails on x64 with BadImageFormatException

我有一个 Visual Studio 解决方案,我使用 MSTest 进行单元测试,并且想使用 ReSharper Test运行ner,因为我认为 Visual Studio Test Explorer 是一起工作真的很痛苦。我的整个解决方案是为 x64 构建的,因为我有一些专门为 x64 编译但不适用于 x86 的依赖程序集。

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

抛出以下异常,就在它到达单元测试的第一行之前:

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.

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

抛出的

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

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

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

令人恼火的是,测试 运行 在 Test Explorer 中可以正常运行,但在 ReSharper 中却不行,尽管两者都已设置为 x64。我是否缺少需要修改的特定设置?还是将 ReSharper 与 MSTest 结合使用时存在一些已知问题?我也可能会考虑改用 nUnit,但我需要修改所有测试,所以我最好继续使用 MSTest。


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

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

但不管怎样,它现在可以正常工作了。