2011-02-10 26 views
6

このコードでは、postと書かれているように、コードカバレッジファイルを生成するためのバッチファイルがあります。VSコードカバレッジツールのバッチ実行

cl /Zi hello.cpp -link /Profile 
vsinstr -coverage hello.exe 
start vsperfmon /coverage /output:run.coverage 
hello 
vsperfcmd /shutdown 

ただし、バッチファイルを実行すると、このエラーメッセージが表示されます。

enter image description here

私はそれを完了するために、手動でvsperfcmd /shutdownを実行する必要がありました。 何が間違っている可能性がありますか?

答えて

5

これは単なるタイミングの問題です。

start vsperfmon /coverage /output:run.coverageコマンドは、別のプロセスでvsperfmon.exeを起動します。

同時に、スクリプトはhelloに実行されます。 helloが本当にシンプルなプログラムである場合、vsperfmon.exeが実行され完全に初期化される前に実行され、完了する可能性があります。モニタが起動して実行される前にスクリプトがvsperfcmd /shutdownに達すると、表示されているエラーが表示されます。あなたのバッチファイルで独占的にそれを使用できるよう

vsperfcmdは、vsperfmonのためだけのコントローラ/ランチャーです:

cl /Zi hello.cpp -link /Profile 
vsinstr -coverage hello.exe 
vsperfcmd /start:coverage /output:run.coverage 
hello 
vsperfcmd /shutdown 

この場合、モニタが起動して、完全になるまで、vsperfcmdへの最初の呼び出しはブロックされますランニング。 IIS Expressアプリケーションですでにインストルメントファイルのためにこれを行うには

+0

感謝を終了し、それは魔法のように動作します。この質問にも私を助けてくれますか? - http://stackoverflow.com/questions/4965173/generating-coverage-file-programmatic-way-with-visual-studio-2010 – prosseek

+0

Zam !!!!!!! "vsperfcmdはvsperfmonのコントローラ/ランチャーだけです"というヒントが必要でした。 – granadaCoder

0

C:\Users\<your user>\Documents\IISExpress\config\applicationhost.config

vsperfcmd /start:coverage /output:run.coverage 
"c:\Program Files (x86)\IIS Express\iisexpress.exe" /site:"<that thing you got from applicationhost.config>" 

からブラウザをサイトの名前を取得します可能性が自動起動。コード内をクリックして、手動テストを行います。

その後、答えを

vsperfcmd /shutdown 
関連する問題