xUnit測試在Jenkins下運行。xUnit在Jenkins下失敗:BadImageFormatException
我運行x86/x64 Debug/Release配置的測試。 在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,但我有與舊版本相同的問題。
服務器操作系統:Windows 2008 R2 Enterprise。
xunit.runner.console:2.1.0
我想知道爲什麼只有詹金斯下再現的錯誤?如果我從命令行運行相同的腳本,那沒問題。 x86 /發佈工作正常(在大多數時間:) - 我需要尚未調查時)。 x86/Debug總是產生錯誤 – sergtk
@sergtk在問題中有幾個特定的Jenkins(甚至是xUnit) - 這是一個低級的.NET問題 - 一個說「我必須在x86進程中」的DLL和.NET告訴所有和各種各樣的「好,我恐怕這已經是一個x64過程,所以改變你的過程或改變你的過程」。在Debug和Release版本之間有設置變化(AnyCpu與否)的可能性(settigng是配置特定的) –
運行xunit.console.x86.exe解決的問題。我不明白爲什麼xunit.console.exe在Jenkins下不能用於x64,但無論如何,問題都解決了! – sergtk