我正在尝试使用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停止后关闭,OpenCover还能获得覆盖率信息吗?
OpenCover一直从目标进程收集信息,但是在目标进程停止之前不会导出信息,如果目标进程异常停止,它也不会将信息导出到文件。
您的-register
选项无效,请参阅使用指南。
如果在控制台模式下停止服务,为什么不尝试一种不那么侵入性的方法-我通常只是等待回车键。
如果CTRL+C是顶级架子强加的东西,不能改变,那么把你的应用程序包装在你自己的服务中。这并不难(有向导来帮助你),并且会给你更多的控制。
有很多文章展示了如何使它在控制台和服务模式下运行。
OpenCover有时可以与服务一起工作,我再次建议您参考wiki和-service
开关,但这可能很难工作