2009-08-14 8 views
2

Team Foundation Buildを使用してxunit.net xunitタスク(/platform:AnyCpu)を呼び出していますが、TFSBuild.projのTeamBuild呼び出しはバニラです。TeamBuildのx64 [xunit.netテスト用]の部分実行

x64固有のテスト( `/ platform:x64 ')がいくつかあり、ImageFormatExceptionが発生します。私はx86とマークされたテストアセンブリーも持っているので、すべてまたは何もできません。

NUnitには、MSBuildタスクのプラットフォームスイッチがあります.xunit doesnt。

私は、次の方法を考えることができます:

  1. はxUnitのタスクを呼び出すために64ビットのMSBuild子タスクを起動する - そこにツールパスparamがイマイチなので、それは良いアイデアだ場合、クリーンExecのタスクの構文ものですそれを行うには、子供の環境を渡す?
  2. 特別なケースxunit.console.x64を使って64ビットを呼び出す
  3. x64にTeamBuild全体を切り替え、特殊な場合はx86です(ただしx86の特別な場合には必要な逆の状況になります) 。他の人が同様の問題を扱うにして成功を収めている何

(私はまた、カスタムタスクを右PROGRAであることを確認してください〜... \ MSBuildのdirを作成するよりも、他の、おそらくより手間があるように起こっていることを前提とし)この?

答えて

4

xUnit.netは、ランナーと同じプロセス内で別のAppDomainでテストを実行します。 MSBuildは32ビットのみのフラグであるため、MSBuild xunitタスクで実行されるテストは32ビットモードで実行する必要があります。

最も簡単な回避策は、MSBuildタスクを使用せず、代わりにコンソールランナーにシェルすることです。これは新しいプロセスを作成するため、デフォルトでは64ビットモードで実行されます。また、1.5ベータ版を使用している場合は、32ビットモード(xunit.console.x86.exe)を強制実行できるEXEが含まれており、これは32ビット版と64ビット版のテストの問題を解決します。

+0

オプションを確認していただきありがとうございます。 TeamBuildはVS08SP1のx86中心ですが、msbuild自体にはx64の亜種があります。だから私はオプション1を使用しました。私はFramework64 msbuildのexecを行い、x64モードで[anycpu] xunitタスクを引き出し、望み通りに実行します。これは、私が既にMSBuild MSBuildタスクを使用してItemGroup内の一連のテストアセンブリを反復処理しているので、私の文脈で一番うまく動作します。 ...これは意味がありますか? –

関連する問題