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 работы, все отлично работают.
Я попытался запустить Дженкинс как сервис и как отдельное приложение. Я получил ошибку в обоих случаях.
Я попытался запустить ILSpy
в этой DLL и не нашел сообщений об ошибках относительно отсутствующих зависимостей.
Как сделать xUnit
успешно работать на всех конфигурациях под Jenkins?
Моя dll построена с .NET 4.6.1.
Версия Jenkins: 2.32.1, но у меня такие же проблемы со старыми версиями.
Сервер ОС: Windows 2008 R2 Enterprise.
xunit.runner.console: 2.1.0
Я задаюсь вопросом, почему ошибка воспроизводится только под Дженкинс? Если я запускаю тот же скрипт из командной строки, это нормально. x86/Release работает отлично (в большинстве случаев :) - мне еще нужно выяснить, когда именно). x86/Debug всегда производит ошибку – sergtk
@sergtk В этой проблеме есть мало Jenkins (или даже xUnit) - это проблема .NET на низком уровне - это DLL, которая говорит, что «I * must * должна быть в процессе x86», и .NET говорит все и все «хорошо, я боюсь, что это уже процесс x64, поэтому измените свой процесс или измените свой процесс». Скорее всего, у вас есть изменения в настройках (AnyCpu или нет) между сборками Debug и Release (для параметра settigng задано значение конфигурации) –
Запуск проблемы с xunit.console.x86.exe. Я не понимаю всех деталей, почему xunit.console.exe не работал для x64 только у Jenkins, но в любом случае проблема решена! – sergtk