c # — NUnit: не удалось загрузить файл или сборку ‘some.dll’ или одну из ее зависимостей. Указанный модуль не может быть найден

У меня есть C ++ / CLI DLL, которая использует некоторые C ++ DLL (обе созданы для 32-битных). Я хочу проверить это в C # DLL с помощью NUNit 2.5.8.10295 (изменение на 2.6.4 не изменило результат)

Я использую командный файл, который в итоге расширяется до этого:

nunit-console-x86.exe "someUnitTests.dll" /framework=4.0.30319 /xml=NUnitResult_someUnitTests.xml

С помощью этой команды на моем компьютере для разработки (64-разрядная версия Win 10 Enterprise Visual Studio 2013) тесты выполняются нормально. При запуске nunit-console-x86.exe из Visual Studio Professional 2013 и установке рабочего каталога в выходную папку двух DLL-файлов он также работает нормально.

При выполнении на сервере сборки (Jenkins работает на Windows Server 2012 R2) тест завершается с этим сообщением:

SetUp : System.IO.FileLoadException : Could not load file or assembly 'some.DLL' or one of its dependencies. A dynamic link library (DLL) initialization routine failed. (Exception from HRESULT: 0x8007045A)

Я попытался сравнить установленные фреймворки и среды выполнения на обеих машинах (не вижу очевидных больших различий), за исключением сервера сборки, использующего VS 2013 Express. Я также экспериментировал с SysInternals ProcessMonitor, но безуспешно. Вывод зависимости ходунка я не понимаю.

Любые советы по технике или инструментам для использования?

Обновить:
Если я добавлю / noshadow, он больше не будет работать на моем ПК для разработки. В Visual Studio происходит сбой nunit-console-x86, а в командной строке выдается то же сообщение, что и на сервере сборки. В то время как там не имеет значения, запускается ли с / без / noshadow

При более внимательном рассмотрении на тестовом ПК с Windows 7 без Visual Studio, но с vc_redist 2013: с включенным теневым копированием (= без / noshadow) я получаю следующее:

SetUp : System.IO.FileNotFoundException : Could not load file or assembly 'some.DLL' or one of its dependencies. The specified module could not be found.

С / noshadow ошибка превращается в BadImageFormatException

1

Решение

NUnit 2.x теневые копии по умолчанию копируют файлы, но теневое копирование не копирует собственные сборки. Я считаю, что он работает в Visual Studio для вас, потому что вы устанавливаете рабочий каталог.

Чтобы отключить теневое копирование в NUnit, передайте /noshadow опция командной строки.

Кроме того, стандартное поведение в NUnit 3 — не теневое копирование.

1

Другие решения

В конце концов мне удалось уменьшить сложность, создав консольное приложение без NUNit, столкнувшись с похожими проблемами и исправив их. Увидеть Консольное приложение x86 не работает на 64-битных машинах, кроме как в отладчике для деталей.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector