Как получить модульные тесты для запуска на платформе x64
У меня есть приложение С#, которое должно работать в режиме x64. Проблема в том, что я пытаюсь создать модульные тесты, которые запускают методы в приложении x64, а проект unit test даже не будет создан. Я получаю следующую ошибку, когда пытается создать.
Ошибка загрузки C:.....\bin\x64\Debug.... UnitTests.dll: невозможно загрузить тестовый контейнер C:.....\bin\x64\Debug.... UnitTests.dll 'или одну из его зависимостей. Если вы создадите сборку тестового проекта как 64-битную сборку, ее нельзя загрузить. Когда вы создаете сборку тестового проекта, выберите "Любой процессор" для платформы. Чтобы запустить ваши тесты в 64-битном режиме на 64-битном процессоре, вы должны изменить свои тестовые настройки на вкладке "Хосты", чтобы запустить ваши тесты в 32-битном процессе. Сведения об ошибке: Не удалось загрузить файл или файл сборки:///C:..... UnitTests\bin\x64\Debug.... UnitTests.dll 'или одна из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом.
Я попытался изменить unit test на x64, а также любой CPU и все еще не могу заставить его работать. Есть ли какое-либо исправление для этого?
Ответы
Ответ 1
Я предполагаю, что вы используете среду тестирования Visual Studios, так как не упоминаете другого.
В VS2010 вы можете заставить тестовый хост работать в x64.
Создайте свои сборки как любой процессор или x64, затем установите тестовый узел на x64.
http://msdn.microsoft.com/en-us/library/ee782531.aspx
Ответ 2
В VS 2012 и выше вы можете выбрать целевую платформу по умолчанию из Test
в меню Test Settings|Default Processor Architecture
![Настройки тестирования Visual Studio]()
Ответ 3
У меня была аналогичная проблема. В Visual Studio 2010 есть странная проблема (в x64), что приводит к изменению целевого ЦП при добавлении нового проекта в существующее решение. Вы уверены, что все ссылки и целевые объекты ЦП равны x64?
Ответ 4
Вам нужно будет установить все ссылки тестового проекта на локальный (установите значение true). Я получил эту проблему раньше, надеюсь, что она будет работать и для вас (я использую Windows 7 64 бит + VS2012)
Ответ 5
Эта ошибка может быть исправлена, если вы очищаете и перестраиваете все соответствующие сборки. Должен быть один файл поврежден неожиданно.
Одна вещь, которую нужно улучшить для VS, - это когда обнаружено неправильное форматирование, сообщите имя файла. Затем разработчик может только перестроить этот файл.