在运行一般测试时,可能会遇到以下错误:在 64 位平台上运行一般测试时,无法收集代码覆盖率数据。若要解决此错误,请参见下一部分避开 32 位限制中的信息。
要求
- Visual Studio 旗舰版, Visual Studio 高级专业版
避开 32 位限制
代码覆盖率检测仅在 32 位模式下有效,在 64 位模式下无效。这是由于在针对程序集检测了代码覆盖率数据之后,程序集只能在 32 位模式下加载。
![]() |
---|
如果您未在收集代码覆盖率数据,那么,当您在 64 位计算机上运行单元测试时,就不会应用这样的限制。这是由于 VSTestHost.exe(用来加载类库的测试引擎)是在 32 位进程中运行的。 |
对于一般测试,包装应用程序是针对“Any CPU”构建的,它在 64 位计算机上作为 64 位进程执行。当该 64 位进程尝试加载 32 位程序集时,会出现错误。此问题可通过下列方法之一来解决。
如果您的一般测试直接包装成品代码已经编译到的二进制文件,请使用下面的方法:
- 将解决方案配置更改为 x86
如果在一般测试和成品代码二进制文件之间有一层,请使用以下两种方法之一。即,一般测试将中间应用程序作为测试工具来包装。此测试工具接下来运行所测试的成品代码。
- 更改用来加载成品代码二进制文件的应用程序的生成设置
将解决方案配置更改为 x86
将解决方案配置从“Any CPU”更改为“x86”。
更改解决方案配置
右击该解决方案然后选择 属性。
将显示**“解决方案属性页”**对话框。
在 配置属性下,选择 配置。
选择 配置管理器。
将显示**“配置管理器”**对话框。
在**“活动解决方案平台”下面单击“新建”**。
将出现**“新建解决方案平台”**对话框。
在 键入或选择新平台下,选择 x86。
在 新建解决方案平台 对话框中,选择 成功
在的对话框询问您是否希望保存更改,请选择 *** 是 ***。
在 配置管理器 对话框中,在 活动解决方案平台下,请确保 x86 中选择,然后选择 关闭。
在 *** 解决方案属性页 *** 对话框中,选择 确定。
更改用来加载成品代码二进制文件的应用程序的生成设置
使用此过程可检测一般测试所包装的任何中间应用程序或测试工具。该中间应用程序将运行要测试的代码,
在该过程中,将更改该中间应用程序的设置,使其针对 x86 平台生成。
![]() |
---|
只有当所包装的应用程序是从解决方案中的项目生成时,才能这样做。 |
更改所包装应用程序的生成设置
在解决方案资源管理器中,右击中间应用程序生成的项目,然后选择 属性。
这将显示该项目的属性页。
选择 生成 选项。
对于“目标平台”,请指定**“x86”**。
在 文件 菜单中,选择 保存选定项。