NUnit не запускает код Visual Studio 2010


98

Я пытаюсь загрузить бета-версию DLL Visual Studio 2010 в графический интерфейс NUnit. Я получаю всплывающее сообщение об ошибке.

Эта сборка создается более новой средой выполнения, чем текущая загруженная среда выполнения, и не может быть загружена. Возможно, вы пытаетесь загрузить сборку с более поздней версией среды CLR, чем версия, под которой в настоящее время работает NUnit.

Как заставить исполняемый файл запускаться под .NET 4?


Действительно ли этот вопрос относится к коду VS 2010 или .NET 4? - Я ищу инструмент, который позволяет мне запускать тесты NUNIT в Visual Studio 2010, и этот вопрос вводил в заблуждение.
Николас Ирисарри

@Nicolas - это относится к .NET 4.0.
Дэниел А. Уайт

Ответы:


132

Я загрузил исходный код NUnit 2.5 и открыл решение VS2008 в бета-версии VS2010. После завершения преобразования я открыл все проекты и изменил настройку целевой платформы для всех проектов на «.NET Framework 4.0». Затем я построил решение без каких-либо ошибок. Теперь я могу использовать приложение NUnit GUI для запуска тестов, созданных для .NET 4.0. Я не проводил исчерпывающего тестирования этой сборки, поэтому могут возникнуть проблемы, но для моих целей она работает нормально.

Обновление: нет необходимости перестраивать NUnit. Я обнаружил, что если вы добавите следующее в соответствующий файл конфигурации NUnit, вы сможете запустить тестовую dll, созданную для .NET 4.0.

В разделе <конфигурация> добавьте:

<startup>
  <supportedRuntime version="v4.0.30319" />
</startup>

и в <runtime> добавить:

<loadFromRemoteSources enabled="true" />

3
Хорошо, обновления конфигурации заставляют его работать, но мне пришлось использовать version = "v4.0.21006" для моего тега requiredRuntime.
mkmurray

4
Кстати, расположение файла конфигурации по умолчанию: C: \ Program Files \ NUnit 2.5.3 \ bin \ net-2.0 \ nunit.exe.config Добавление этих параметров в конфигурацию сработало для меня.
Брэд Ирби

2
Не удалось заставить это работать с последней версией Nunit + .net4 RTM. Я добавил предложенные записи в nunit-console.exe.config, но получаю: System.ArgumentException: платформа net-4.0 недоступна Пробовал с вышеуказанными версиями + v4.0.30319 Я использую 2008 R2 x64
Андреас Олунд,

1
Для средства запуска консоли измените конфигурации, как указано выше, но используйте v4.0.30319 для RTM-версии .NET 4.0. Также запустите его с этим аргументом командной строки: /framework=4.0.30319
Лэнс Фишер,

1
Мне посчастливилось использовать параметр командной строки /framework:net-4.0.30319 вместо изменения конфигурации. Это было полезно, так что я мог контролировать, какие приложения используют 4.0 CLR, а какие нет.
Кевин Кроуэлл,

25

С выпуском .NET 4 я использовал

<supportedRuntime version="v4.0.30319" />

в NUnit 2.5.4 exe.config вместо requiredRuntime и теге loadFromRemoteResources, как показано выше, и все работало хорошо. Спасибо!


17

Вам не нужно изменять какой-либо файл

просто откройте этот файл и все будет работать нормально

C: \ Program Files (x86) \ NUnit 2.5.10 \ bin \ net-2.0 \ nunit-x86.exe


Спасибо - раскрыл мой случай. Придется использовать x86 версию nunit для модульных тестов, скомпилированных x86. Предупреждения о версии CLR были отвлекающим маневром. Использование nunit 2.5.10.
Найджел Тач

То же самое здесь, как-то нужно использовать версию x86
гэвин

12

В NUnit 2.5.5 вы можете указать в командной строке параметр /framework=net-4.0, и он совместим с новыми сборками, созданными с выпуском последней версии VS2010.


3
Мне никогда не удавалось заставить это работать. Я видел, как люди использовали /framework:net-4.0.30319 и всевозможные другие варианты. Было бы неплохо, если бы они включили актуальные параметры в документацию сайта.
Джейсон Шорт,

2
@Jason Похоже, что это работает только в консольной версии. Версия с графическим интерфейсом пользователя не имеет этой опции.
Роман Старков

+1 за упоминание, что это работает, начиная с версии 2.5.5! У меня был NUnit, бросающий ArgumentExceptions и NullReferenceExceptions на одну из моих машин, и оказалось, что это из-за версии 2.5.0.
realMarkusSchmidt

2

Предлагаемое решение отлично сработало для запуска NUnit. К сожалению, когда я добрался до этапа покрытия кода, NCover начал давать мне:

Профилированный процесс прекращен. Соединение с профайлером не установлено.

Лучшим решением, которое я нашел, было просто использовать версию NUnit "-x86" с NCover:

NCover.Console.exe nunit-console-x86.exe - дополнительные параметры -

Работает сейчас.


1
Спасибо за это, у меня возникла та же проблема, ваше исправление решило ее!
CubanX

2

Чтобы найти свою версию .net 4 из Visual [C # 2010 Express, или что-либо еще], перейдите в «О программе» Visual приложения в пункте меню «Справка». Версия должна отображаться под строкой Microsoft .NET Framework в верхней правой части окна.


1

Я столкнулся с тем же сообщением об ошибке при запуске NUnit 2.4.8. Поскольку я некоторое время не обновлялся, я установил текущий NUnit (v2.5.9) и обнаружил, что теперь он поддерживает сборки VS2010. Поэтому, если вы недавно столкнулись с этой ошибкой, проверьте свою версию NUnit : по состоянию на декабрь 2010 г. (или около того) единственное, что вам нужно сделать, это обновить NUnit.


Я использую NUnit 2.5.9, загруженный 15/03/2011, и эта проблема не исчезнет для меня. Даже если я попробую предложенное решение
DrLazer

1

Начиная с NUnit 2.5.10 вы можете включить поддержку Visual Studio в средстве выполнения GUI:

Инструменты-> Настройки-> Поддержка IDE

После этого я смог успешно подключиться к процессу nunit-agent.exe, который запускает вашу сборку в домене приложения .NET 4.0.


0

Если вы столкнулись с этой проблемой после обновления до nunit 2.5.5, вам нужно будет обновить nant до последней версии, для меня это была .91 alpha.


0

Я нашел полезным начать с шаблона приложения NUnit . Он поддерживает VS C # Express, позволяет выполнять отладку тестов и содержит предварительно скомпилированный NUnit для .NET 4.0. Благодаря автору новый тестовый проект готовится одним щелчком мыши.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.