我正在使用绝对必须运行 64 位的 Outlook Redemption 为应用程序编写测试(它连接到 Windows MAPI 和 Outlook x64)。不幸的是,我一辈子都无法让它以 64 位运行测试。我曾尝试使用一个.runsettings
文件(已编辑以指示 64 位)和一个.testsettings
文件(也已编辑),最后我选择Test>TestSettings>Default Processor Architecture>64-bit
了 ,但无济于事。
每次,System.Environment.Is64BitProcess 都是假的,当我加载 dll 以连接到 Outlook 和 MAPI 时,我得到可怕的 COM 异常:Wrong OS or OS version for application (Exception from HRESULT: 0x800401FA (CO_E_WRONGOSFORAPP))
这表明安装了 64 位 Outlook 并且尝试访问它的进程是 32 位.
我在更改设置后重新启动了 VS 2012,因为我在某处读到可能需要重新启动。有没有人有任何其他建议?我可以将其编写为运行非正式测试并报告其状态的控制台应用程序,但我的下一步是将这些测试集成到自动化构建中。任何帮助将不胜感激。
编辑
.testsettings 中主机设置页面的屏幕截图
实验
有趣的是,我做了一个小实验。我使用单个控制台应用程序项目创建了一个新解决方案。我在其中放置了一个刚刚返回 true 的公共方法。当我运行控制台应用程序并暂停执行时,我查看了一下,它确实在运行 64 位;那里没问题。然后我添加了一个测试项目,创建了一个调用该方法的测试。我还添加var is64 = Environment.Is64bitProcess
并在其后放置了一个断点。
可以预见的是,在不改变任何选项的情况下,is64 是错误的。我从被测下拉列表中选择了 64 位默认架构,然后清理了解决方案,再次运行测试,结果相同,运行 32 位。我重新启动了 VS2012,清理、构建,结果相同。我创建了一个 testsettings 文件并在 Test 菜单中引用它,clean build,same,restart,clean,build same。我创建了一个 runsettings 文件 set <TargetPlatform>x64</TargetPlatform>
,在测试菜单中引用了它,再次运行它,并得出了相同的结果。QTAgent32.exe 继续运行该进程,并且绝对拒绝听从我要求它运行 64 位的要求。
我发誓,如果我必须删除 QTAgent32.exe 并将 QTAgent 重命名为该名称,我会的。当它想要固执时,我并没有把我的愿望塞进电脑的喉咙里。请,如果您不想看到我虐待工作站,请有人告诉我出了什么问题。想想电脑。