2017-01-29 14 views
1

xUnit 테스트가 Jenkins에서 실행됩니다.xenit가 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. 

내가 젠킨스 작업을 실행하는 데 사용으로 내가 명령 줄에서 같은 배치 파일을 실행, 모든 것이 잘 작동합니다.

젠킨스를 서비스 및 독립 실행 형 응용 프로그램으로 실행하려고했습니다. 두 경우 모두 오류가 발생했습니다.

이 DLL에서 ILSpy을 실행하려고 시도했지만 누락 된 종속성과 관련된 오류 메시지를 찾지 못했습니다.

젠킨스의 모든 구성에서 xUnit을 성공적으로 실행하는 방법은 무엇입니까?

내 dll은 .NET 4.6.1로 작성되었습니다.
젠킨스 버전 : 2.32.1,하지만 이전 버전과 동일한 문제가 있습니다.
서버 운영 체제 : Windows 2008 R2 Enterprise.
xunit.runner.console : 2.1.0

답변

1

이것은 문제의 DLL로 인해 32 비트 비틀림 제한 조건이 발생할 가능성이 높습니다.

a 중 하나가 필요합니다. (예를 들어, 일부 증착은 32 비트 DLL이 필요한 경우),

또는

B를 32 비트 주자 실행. 오류는 젠킨스에서 재현 이유가 궁금 시험 anycpu를 조립 (하지만 사용하여 "32 비트 선호"플래그) 또는 x64]

See lots more similar cases in this answer

+0

를 구축? 명령 줄에서 같은 스크립트를 실행해도 괜찮습니다. x86/Release는 잘 작동합니다 (대부분의 경우 :) - 정확한시기는 아직 조사 할 필요가 없습니다.) x86/Debug는 항상 오류를 생성합니다. – sergtk

+1

@sergtk 문제의 특정 Jenkins (또는 심지어 xUnit)가 있습니다. 이것은 저수준의 .NET 문제입니다. "I * * x86 프로세스에 있어야합니다"라는 .NET DLL과 .NET "물론이게 이미 x64 프로세스이기 때문에 프로세스를 변경하거나 프로세스를 변경하는 것이 두렵습니다." 디버그 및 릴리스 빌드 사이에 (AnyCpu 또는 Any) 설정에 변형이있을 가능성이 있습니다 (settigng는 구성에 따라 다릅니다) –

+0

xunit.console.x86.exe를 실행하면 문제가 해결됩니다. xunit.console.exe가 Jenkins에서만 x64에서 작동하지 않는 이유를 모두 이해할 수는 없지만 어쨌든 문제가 해결되었습니다! – sergtk