我正在使用Outlook Redemption编写应用程序的测试,该应用程序必须在64位系统下运行(它需要连接到Windows MAPI和Outlook x64)。不幸的是,无论如何我都不能使它在64位下运行测试。我尝试使用一个.runsettings
文件(编辑以指示为64位)和一个.testsettings
文件(同样被编辑),最后我选择了测试>测试设置>默认处理器架构> 64位
,但都没有成功。
每次,System.Environment.Is64BitProcess的返回值都是false,当我加载dll以连接到Outlook和MAPI时,我会遇到可怕的COM异常:应用程序的错误操作系统或操作系统版本 (HRESULT:0x800401FA (CO_E_WRONGOSFORAPP))
,这表明安装了64位的Outlook,而尝试访问它的进程是32位。
我已经按照某些地方所说的重新启动了VS 2012,因为更改设置后可能需要重启。请问有没有其他建议?我可以将其作为控制台应用程序编写,运行非正式测试并报告其状态,但我的下一步是将这些测试集成到自动化构建中。非常感谢您的帮助。
编辑
.testsettings页面的主机设置截图:
实验
有趣的是,我进行了一个小实验。我创建了一个新的解决方案,其中只有一个控制台应用程序项目。我在其中放置了一个公共方法,该方法仅返回true。当我运行控制台应用程序并暂停执行时,我查看了一下,它确实在64位上运行;这没有问题。然后,我添加了一个测试项目,创建了一个调用该方法的单个测试。我还添加了var is64 = Environment.Is64bitProcess
并在其后面设置断点。
<TargetPlatform>x64</TargetPlatform>
,在测试菜单中引用它,重新运行了所有步骤,结果还是一样的。QTAgent32.exe继续运行该进程,并且绝对不会听从我的要求以64位运行。我发誓,如果我必须删除QTAgent32.exe并将QTAgent重命名为该名称,我会这么做。当计算机想要固执己见时,我不会放过强制执行我的意愿。请,如果你不想看到我虐待工作站,请有人告诉我出了什么问题。为电脑着想。