Подтвердить что ты не робот

Force NCover 1.5.8 использовать v4 framework, как testdriven.net?

Я хочу запустить покрытие из командной строки, но не могу заставить NCover 1.5.8 обрабатывать код. Это должно быть возможно, так как при выполнении тестов на покрытие TestDriven.net это работает. разница в том, что TD.NET может заставить NCover использовать фреймворк 4.0 (вы получаете это в журнале при запуске: MESSAGE: v4.0.30319), но из командной строки я не могу это сделать (я получаю это в log: MESSAGE: v2.0.50727)

Итак, как я могу заставить NCover играть хорошо с nunit из командной строки, как это происходит с TD.NET?

4b9b3361

Ответ 1

после большего поиска я нашел это:

Если вы нашли эту ветку, потому что вы пытаетесь получить NCover 1.5.8 для работайте с .NET 4, затем следуйте следует исправить эту ошибку:

Откройте командную строку и введите следующий набор COMPLUS_ProfAPI_ProfilerCompatibilitySetting = EnableV2Profiler

Это дает команду NET 4 CLR загружать .NET Framework 2.0 Profiler.

Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/dd778910.aspx

в конце потока здесь

который, кажется, решает мою проблему

ИЗМЕНИТЬ:

он действительно не решает мою проблему. Теперь он просто позволяет генерировать файл coverage.xml, но он содержит только сборки сборки v2.0, поэтому профили .net 2.0 профилируются....

Grrr. вернуться к чертежной доске...

РЕДАКТИРОВАТЬ 2

Аллилуйя! Я понял это из-за процесса случайного googling и изменения. во всяком случае, из-за некоторых указателей найдено здесь Я смог выяснить, что мне нужно было сделать, чтобы изменить exe.config приложения запуск файла кода (nunit.console-x86.exe в этом случае), чтобы не только принудительно загрузить определенную версию .net-структуры, но и разрешить использование устаревшей политики активации. Чтобы сократить длинный рассказ, я смог решить это:

  • Добавление в nunit-console-x86.exe.config следующего раздела:
<configuration>  
    <startup useLegacyV2RuntimeActivationPolicy="true">  
        <supportedRuntime version="v4.0.30319"/>  
    </startup>  
</configuration>
  • установка этих параметров в среде, из которой запускается команда:

    set ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler
    set COMPLUS_ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler
    (не уверен, что оба необходимы, но то, что я сделал)

Я также добавил аналогичную настройку в NCover.Console.Exe.config, но, оказывается, это не нужно.

РЕДАКТИРОВАТЬ 3

это используемая мной командная строка (обратите внимание, что я скопировал все ncover и nunit и мои тестовые сборки в один каталог, чтобы упростить).

NCover.Console.exe nunit-console-x86.exe /framework=4.0.30319 Your.Test.Assembly.dll //x coverage.xml //reg

Ответ 2

Возможно, я неправильно понял вашу проблему, но если вы пытаетесь заставить NCover работать в среде выполнения .NET 4.0, вы можете попытаться поместить supportedRuntime в файле конфигурации.

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

Это заставит .NET 4.0 работать с исполняемым файлом без необходимости его восстановления.