Заставить NCover 1.5.8 использовать фреймворк v4, как testdriven.net? - PullRequest
19 голосов
/ 07 февраля 2011

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

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

Ответы [ 2 ]

27 голосов
/ 07 февраля 2011

после дополнительных поисков я нашел это:

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

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

Это инструктирует .NET 4 CLR загружаться Профилировщик .NET Framework 2.0.

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

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

что, похоже, решает мою проблему

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

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

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

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

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

  • Добавление в 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

4 голосов
/ 07 февраля 2011

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

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

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

...