OpenCover を使用して、Topshelf を使用するサービスのカバレッジ メトリックを取得しようとしています。アプリケーションはコンソールから正常に実行されます。
アプリケーションを実行すると、次のように出力されます。
The service is now running, press Control+C to exit.
次に、Control + Cを押すと印刷されます
Control+C detected, attempting to stop service.
OpenCover なしで完了すると、アプリケーションは Ctrl+C をキャッチして正常に停止し、終了時にコマンド プロンプトに戻ります。
次のコマンドを使用して、OpenCover を介してアプリケーションを実行しています。
OpenCover.Console.exe -target:service.exe -log:All -register:administrator
OpenCover を使用すると、OpenCover は Ctrl+C をすぐにキャッチして、それをサービス アプリケーションに渡すと思います。その結果、OpenCover はすぐに終了しますが、カバレッジのターゲット アプリケーションはまだ実行されており、停止するのにさらに数秒かかります。Process Explorer でサービス プロセスがまだ進行中であることを確認できます。終了すると、クリーンアップ メッセージが stdout に出力されます。
OpenCover がメトリックを取得しようとしているアプリケーションが、OpenCover の停止後にシャットダウンした場合、OpenCover は引き続きカバレッジ情報を取得できますか?