19

コマンドラインからカバレッジを実行したいのですが、NCover1.5.8でコードをインストルメント化できないようです。TestDriven.netでカバレッジテストを実行すると、それが機能するので、それは可能であるに違いありません。違いは、TD.NETがフレームワーク4.0を使用するようにNCoverを取得できることです(実行時にログで取得します:)がMESSAGE: v4.0.30319、コマンドラインからは作成できません(ログで取得しますMESSAGE: v2.0.50727:)

では、TD.NETの場合と同様に、コマンドラインからnunitを使用してNCoverを適切に再生するにはどうすればよいですか?

4

2 に答える 2

27

さらに検索した後、これを見つけました:

NCover 1.5.8 を .NET 4 で動作させようとしているためにこのスレッドを見つけた場合は、次の手順でこのエラーを修正する必要があります。

コマンド プロンプトを開き、次のように入力します set COMPLUS_ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler

これにより、.NET Framework 2.0 プロファイラーを読み込むように .NET 4 CLR に指示されます。

詳細については、http: //msdn.microsoft.com/en-us/library/dd778910.aspxを参照してください。

ここのスレッドの最後に

私の問題を解決するようです

編集

それは本当に私の問題を解決しません。これで、coverage.xml を生成できるようになりましたが、v2.0 フレームワーク アセンブリのみが含まれているため、.net 2.0 アセンブリのみがプロファイリングされます....

うーん。ふりだしに戻る...

編集2

ハレルヤ!私はランダムなグーグルと変更のプロセスによってこれを理解しました。とにかく、ここで見つかったいくつかのポインターにより、コードを実行しているアプリケーションの 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 およびテスト アセンブリのすべてを 1 つのディレクトリにコピーしたことに注意してください)。

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

于 2011-02-07T14:14:56.713 に答える
4

問題を誤解している可能性がありますが、NCover を強制的に .NET 4.0 ランタイムで実行しようとしている場合はsupportedRuntime、構成ファイルに要素を配置してみてください。

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

これにより、再構築する必要なく、実行可能ファイルに .NET 4.0 が適用されます。

于 2011-02-07T13:11:59.243 に答える