在VS2012中,我通过转到:TEST->解决了运行单元测试的BadImageException问题。测试设置 - >默认处理器架构 - > 64。
这适用于内置的Visual Studio测试窗口,但我找不到ReSharper的等效设置,因此我无法通过单击测试左侧的小节点来运行单元测试。这显然不重要但真的很烦人。
有谁知道这些设置在哪里?
答案 0 :(得分:11)
ReSharper将使用测试项目的位进行测试。因此,如果您的测试项目是AnyCpu,它将在AnyCpu主机进程中运行,这意味着32位系统上的32位或64位系统上的64位。如果将项目设置为32位或64位特定,ReSharper将在32位或64位主机进程中运行它。
因此,如果您的生产代码是特定于32位的,那么您应该使您的测试项目特定于32位。如果您的生产代码是64位特定的,只要您的测试项目是64位或AnyCpu,它应该可以正常工作。
同样,它将使用测试项目的.net运行时 - .net 2或.net 4。
这些默认值适用于绝大多数情况。我从来没有必须手动设置它,但您可以覆盖此行为,并强制使用bit-ness或.net框架版本。 ReSharper 8在“选项”对话框中具有这些设置(选项 - >工具 - >单元测试)。如果在解决方案打开时设置此项,则会将其设置为当前解决方案。如果没有打开解决方案,它将成为所有解决方案的默认解决方案。您还可以在单元测试会话窗口中基于每个测试运行进行设置。此设置不会保留。
答案 1 :(得分:8)
我尝试了在Google和StackOverflow中找到的不同内容(包括本主题中的其他答案),但对我有用的是:
ReSharper的单元测试会话窗口 - >在顶部面板上将平台下拉列表设置为64位。
答案 2 :(得分:3)
我的解决方案过于苛刻,但这是唯一对我有用的方法
我放置了vstest.executionengine.x86.exe
的副本用于备份,并放置了重命名的vstest.executionengine.exe
(64位版本),而不是旧的32位版本。
答案 3 :(得分:2)
我们有一个similar issue when trying to setup MSTEST for Sharepoint 2007 - 它将继续在x86而不是x64中运行。实例化SPSite
保持说"无法找到http://server:port/处的Web应用程序"。
我开始更换@ valentin-kuzub建议的EXE以确认它会起作用 - 但后来意识到我们错误的Test Settings文件处于活动状态 - 有(2)Local.testsettings
和{{ 1}}。其中一个设置为使用x86而不是针对x64。
另一个选项是switching from testSettings to runSettings和assigning TargetPlatform
。
TraceAndTestImpact.testsettings
最后一个选项(您已尝试过)位于选项#2的XML注释中 - >您也可以从菜单测试 - > 测试设置 - > 默认处理器架构 - > x64 。
答案 4 :(得分:0)
使用高内存代码时,您可能会发现需要更改R#test runner config以包含
<runtime>
<gcAllowVeryLargeObjects enabled="true" />
</runtime>
您可以在
找到此文件%localappdata%\JetBrains\Installations\ReSharperPlatformVs12\
JetBrains.ReSharper.TaskRunner.CLR45.x64.exe.config
此路径可能依赖于Visual Studio版本,并且可能因R#版本而异。此特定路径是带有Resharper 9.1的Visual Studio 2013。 Resharper 10的经常性问题。配置文件的位置不变。 https://youtrack.jetbrains.com/issue/RSRP-446178
答案 5 :(得分:0)
我刚刚与ReSharper和MsTests碰面 - 错误“单元测试运行器无法运行测试不兼容的目标平台”。
我们的问题是测试项目没有建成。
修复:
C:\
Build
确认勾选了 Build 。
在您的解决方案配置之间切换,以确认它是在所有配置中构建的。
答案 6 :(得分:0)
使用Visual Studio 2015,我发现x86和x64设置都会导致这种情况。解决方案是关闭并重新启动Visual Studio。