Msbuild 将TeamBuild的一部分作为x64运行[对于xunit.net测试] 使用Team Foundation Bug,我正在调用xunt.NET xUnk任务,它是“代码> /平台:ANYCUP,但是我的TefStudio调用TFSSBuudi.PROJ是香草版。

Msbuild 将TeamBuild的一部分作为x64运行[对于xunit.net测试] 使用Team Foundation Bug,我正在调用xunt.NET xUnk任务,它是“代码> /平台:ANYCUP,但是我的TefStudio调用TFSSBuudi.PROJ是香草版。,msbuild,64-bit,msbuild-task,xunit.net,tfsbuild,Msbuild,64 Bit,Msbuild Task,Xunit.net,Tfsbuild,我有许多特定于x64的测试(`/platform:x64'),它们会因ImageFormatException而阻塞。我还有一个标记为x86的测试组件,所以它不能是全部或全部 NUnit在MSBuild任务上有一个平台开关,而xunit没有 我可以想到以下方法: 调用64位msbuild子任务以调用xunit任务-没有ToolPath参数,因此如果这是一个好主意,那么传递到子环境中的最干净的Exec任务语法是什么 特殊情况:使用xunit.console.x64调用64位 将整个TeamBuil

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

NUnit在MSBuild任务上有一个平台开关,而xunit没有

我可以想到以下方法:

  • 调用64位msbuild子任务以调用xunit任务-没有ToolPath参数,因此如果这是一个好主意,那么传递到子环境中的最干净的Exec任务语法是什么
  • 特殊情况:使用xunit.console.x64调用64位
  • 将整个TeamBuild切换到x64和特殊情况下的x86(但这使我陷入了needinn到特殊情况下的x86的相反情况)。(我还假设,除了必须确保自定义任务位于正确的PROGRA~…\MsBuild目录之外,可能还会有更多的麻烦)

  • 其他人在处理此类问题时成功的是什么?

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


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

    感谢您确认这些选项。虽然TeamBuild在VS08SP1中非常以x86为中心,但msbuild本身有一个x64变体。所以现在我使用了选项1——我执行Framework64 msbuild,然后在x64模式下拉入[anycpu]xunit任务,并按desirede运行。这可以在我的上下文中进行测试,因为我已经在使用MSBuild MSBuild任务来迭代ItemGroup中的一组测试程序集。。。这有什么意义吗?