.net 如果OpenCover在目标应用程序之前死亡,它可以收集覆盖率统计数据吗?

.net 如果OpenCover在目标应用程序之前死亡,它可以收集覆盖率统计数据吗?,.net,opencover,.net,Opencover,我正在尝试使用OpenCover获取使用Topshelf的服务的覆盖率指标。应用程序在控制台上运行良好 应用程序运行时,会打印以下内容: 服务现在正在运行,按Control+C退出。 一旦按下Control+C,它就会打印出来 检测到Control+C,试图停止服务。 在没有OpenCover的情况下完成时,应用程序将捕获Ctrl+C并正常停止,完成后返回命令提示 我使用以下命令通过OpenCover运行应用程序: OpenCover.Console.exe-目标:service.exe-日志:

我正在尝试使用OpenCover获取使用Topshelf的服务的覆盖率指标。应用程序在控制台上运行良好

应用程序运行时,会打印以下内容:

服务现在正在运行,按Control+C退出。

一旦按下Control+C,它就会打印出来

检测到Control+C,试图停止服务。

在没有OpenCover的情况下完成时,应用程序将捕获Ctrl+C并正常停止,完成后返回命令提示

我使用以下命令通过OpenCover运行应用程序:

OpenCover.Console.exe-目标:service.exe-日志:全部-注册:管理员

通过OpenCover完成后,我认为OpenCover会立即捕获Ctrl+C,然后将其传递给我的服务应用程序。结果是OpenCover立即死亡,但覆盖的目标应用程序仍在运行,需要额外几秒钟才能停止。我可以在process Explorer中看到服务进程仍在运行,它会在服务进程停止时将其清理消息打印到stdout


如果OpenCover尝试从中获取度量的应用程序在OpenCover停止后关闭,OpenCover仍然可以获取覆盖率信息吗?

OpenCover始终从目标进程收集信息,但直到目标进程停止,它才导出信息,如果异常停止,它也不会将信息导出到文件

您的
-register
选项无效,请参阅

如果在控制台模式下停止您的服务,为什么不尝试一种侵入性较小的方式呢?我通常只是等待回车键

如果CTRL+C是top shelf强加的且无法更改的内容,则将您的应用程序包装到您自己的服务中。这并不难(有向导帮助你),而且会给你更多的控制

有很多文章介绍如何使其在控制台和服务模式下运行


OpenCover有时可以再次使用服务。我建议您访问wiki和
-service
开关,但这可能很难使用。

也在OpenCover问题列表中提出-