将TeamBuild的部分运行为x64 [用于xunit.net测试]

时间:2009-08-14 09:40:55

标签: msbuild 64-bit msbuild-task xunit.net team-build

使用Team Foundation Build,我正在调用xunit.net xunit任务,即/platform:AnyCpu,但我对TFSBuild.proj的TeamBuild调用是vanilla。

我有许多特定于x64的测试(`/ platform:x64'),它会被ImageFormatException阻塞。我还有一个标记为x86的测试组件,因此不能全部或全部。

NUnit在MSBuild任务上有一个平台开关,xunit不是。

我可以想到以下方法:

  1. 调用64位msbuild子任务来调用xunit任务 - 没有ToolPath参数,所以如果这是一个好主意,那么最干净的Exec任务语法是什么,传入子环境?
  2. 特殊情况下使用xunit.console.x64
  3. 调用64位
  4. 将整个TeamBuild切换到x64和特殊情况下的x86(但这只是让我遇到了需要的特殊情况x86的情况)。 (我还假设除了必须确保自定义任务在正确的PROGRA〜... \ MsBuild dir之外,可能会有更多的麻烦)
  5. 其他人在处理此类问题方面取得了哪些成功?

1 个答案:

答案 0 :(得分:4)

xUnit.net在与运行程序相同的进程中运行其测试,位于单独的AppDomain中。由于MSBuild标记为仅32位,因此使用MSBuild xunit任务运行的任何测试都必须以32位模式运行。

最简单的解决方法是不使用MSBuild任务,而是转向控制台运行程序。由于这会创建一个新进程,因此默认情况下它将以64位模式运行。此外,如果您使用的是1.5 beta版,我们已经包含了可以强制使用32位模式的EXE(xunit.console.x86.exe),它可以解决您的32位与64位测试问题。