2017-01-29 5 views
1

xUnitテストはJenkinsで実行されます。xUnitはJenkins:BadImageFormatExceptionで失敗する

x86/x64デバッグ/リリース構成のテストを実行します。 Jenkinsで実行している場合、一部の設定がエラーで失敗します。

実行]コマンドとエラーメッセージは次のとおりです。

packages\xunit.runner.console.2.1.0\tools\xunit.console.exe bin\x86\Release\MyDllName.dll -verbose -parallel none -diagnostics 

xUnit.net Console Runner (64-bit .NET 4.0.30319.42000) 

System.BadImageFormatException: Could not load file or assembly 'MyDllName, Version=1.3.549.4300, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format. 
<Absolute-path-to-file>\RunTests.1.proj(59,5): error MSB3073: The command "packages\xunit.runner.console.2.1.0\tools\xunit.console.exe bin\x86\Release\MyDllName.dll -verbose -parallel none -diagnostics" exited with code 1. 

私はジェンキンスジョブを実行するために使用するように私は、コマンドラインから同じバッチファイルを実行すると、すべてが正常に動作します。

サービスとして、スタンドアロンアプリケーションとしてJenkinsを実行しようとしました。どちらの場合もエラーが出ます。

このDLLでILSpyを実行しようとしましたが、不足している依存関係に関するエラーメッセージが見つかりませんでした。

xUnitをJenkinsのすべての設定で正常に実行するにはどうすればいいですか?

私のDLLは.NET 4.6.1でビルドされました。
Jenkinsバージョン:2.32.1ですが、古いバージョンでも同じ問題があります。
サーバーOS:Windows 2008 R2 Enterprise。
xunit.runner.console:2.1.0

答えて

1

これは、該当するDLLが32ビットの脆弱性の制約を受けている可能性があります。

のいずれかにする必要があります。 (例えば、いくつかのDEPは、32ビットのDLLを必要とする場合)B

又は

、32ビットのランナーを実行します。エラーが唯一のジェンキンスさんの下で再現し、なぜ私が疑問に思って

See lots more similar cases in this answer

+0

AnyCpuためのテストアセンブリを構築する(ただし、「優先32ビット」フラグを使用して)またはx64]?私がコマンドラインから同じスクリプトを実行するなら、それは大丈夫です。 x86 /リリースはうまく動作します(ほとんどの時間:) - 私はまだ正確に調べる必要があります)。 x86/Debugは常にエラーを生成します – sergtk

+1

@sergtk問題に固有の小さなJenkins(またはxUnit)があります。これは低レベルの.NETの問題です。「x86プロセスになければなりません」というDLLと.NET 「これはすでにx64プロセスなので、あなたのプロセスを変更したり、プロセスを変更したりすることは恐れています。デバッグビルドとリリースビルドの設定(AnyCpuかどうか)にバラツキがある可能性があります(settigngは構成固有のものです) –

+0

xunit.console.x86.exeを実行すると問題が解決しました。私はxunit.console.exeがJenkinsの下でのみx64で動作しなかった理由をすべて理解していませんが、とにかく問題は解決しました! – sergtk

関連する問題