Gallio продолжает работать .NET 2.0 Runtime после того, как я переключил Test на 4.0 - PullRequest
2 голосов
/ 10 ноября 2011

У меня есть набор тестов, который изначально был создан для .net 2.0. Мы используем Gallio с MBunit для запуска их из консоли, используя Gallio.Echo. Галлио настаивает на запуске 2.0 CLR и затем останавливается, когда видит, что тест был построен для .net 4.0. Что я делаю неправильно? Могу ли я заставить Gallio использовать .net 4? У меня определенно установлено 4 машины.

Сообщение об ошибке:

Время начала: 16:07 Инициализация времени выполнения и загрузка плагинов. Проверка тестовых файлов. Инициализация тестового бегуна. Запуск тестов. Хост начался в 9.11.2011 16:08:00. Запуск под CLR v2.0.50727 во время выполнения. Хозяин остановился на 9.11.2011 16:08:08. Процесс хоста завершен с кодом: 0 При выполнении тестов произошло фатальное исключение. Возможные причины включают неверные параметры запуска теста и переполнение стека. Gallio.Model.ModelException: исключение произошло при вызове тестового драйвера. ---> Gallio.Model.ModelException: Gallio.Model.ModelException: не удалось загрузить тестовую сборку из «C: \ tests \ mytest.dll». ---> System.BadImageFormatException: не удалось загрузить файл или сборку 'file: /// C: \ tests \ mytest.dll' или одну из ее зависимостей. Эта сборка создается средой выполнения, более новой, чем текущая загруженная среда, и не может быть загружена.

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Это наиболее вероятно, потому что ваш appname.exe.config определяет узел <startup>, который принудительно устанавливает время выполнения на 2.0.50727, например:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
  </startup>
</configuration>

Gallio проверяет этот файл на наличие этого атрибута и использует его, если найден,Если явно не задано, Gallio вернется к автоопределению версии .NET Framework.

Следовательно, если вы удалите этот узел <startup>, Gallio должен правильно обнаружить и использовать среду 4.0.30319.

2 голосов
/ 10 ноября 2011

Если вы используете атрибут «/ runtime-version» в исполняемом файле, вы можете точно указать, какую версию платформы загружать - осторожно, для этого требуется, чтобы значение точно совпадало с именем папки в \ Windows \ Microsoft.Net \ Framework \ - например, "v4.0.30319"

...