我也同样需要使用 VSTest.Console.exe 而不是 MSTest.exe 来编译 VS2012/.NET 4.5 x64 应用程序的 TFS2010 构建过程,同时等待升级到 TFS2012 开始。
我采用的方法是编辑构建脚本 XAML,删除现有的单元测试工作流,并将其替换为自定义工作流,该工作流构建 VSTest.Console.exe 参数,然后通过 InvokeProcess 执行 VSTest.Console.exe。然后,我确保在 finally 块中,无论测试结果如何,我们都使用构建服务器上的 VS2012 安装中的 MSTest.exe 将测试结果和代码覆盖率发布到 TFS。
不幸的是,我无法在答案中发布 XAML,因为它超过了字符长度,但我确实有一个文本文件,其中包含要在 DefaultTemplate.xaml 中替换的片段以及替换它的内容。该文件可以在这里找到。请注意,尽管这种方法有效,但它是一种 hack。
另一种选择是使用 NUnit 代替 MSTest 或 VSTest.Console,因为它支持 64 位二进制文件。本文解释了如何将 NUnit 集成到 TFS2010 构建脚本中,并提供了实现这一目标所需的工具和资源的链接。NUnit 的唯一问题是代码覆盖率(需要另一个工具以及如何将这些结果发布到 TFS)和 MSTest 样式的集成测试,使用诸如 DeploymentItem 和诸如 TestContext 之类的属性,这就是为什么我选择使用的原因VSTest.Console.exe 方法。
从我读过的内容来看,TFS2012 提供了从构建脚本轻松集成到 VSTest.Console.exe 的功能,因此如果您升级到 TFS2012,可能不需要我记录的 VSTest.Console.exe hack。