【发布时间】:2017-09-07 23:04:29
【问题描述】:
我有一个自定义构建步骤。在这一步中,我有一个大型长时间运行的工具来将数据库转换为特殊的静态压缩格式。该工具可处理近 2GB 的数据,运行时间长达 30 分钟。
工具处理 Ctrl+C 和 Ctrl+Break。从命令行运行时可以轻松停止。
但是在 VisualStudio 中(我目前使用的是 VS2015)我无法停止这个工具的运行。当我选择Build -> Cancel 时,编译器和链接器停止。但我的工具继续运行。
似乎 VS 不处理它启动的进程的中断信号。
在构建过程中是否有任何技巧或设置可以在不使用任务管理器的情况下中止工具?
【问题讨论】:
-
看起来这种行为是“by design”。如果您控制工具的来源,可能的解决方法:添加一个参数“/cancel”,它设置一个事件并立即返回。在转换例程中定期检查是否设置了事件,如果设置了,则正常退出程序。在 VS 中,将外部工具添加到“Extras”菜单以使用参数“/cancel”调用您的工具。您必须手动调用此菜单项,但仍然比使用任务管理器更好。
-
我刚刚发现了这个Visual Studio extension,它允许您在“Cancel-Build”事件上运行工具或脚本。从此您可以使用“/cancel”参数调用您的工具,正如我在之前的评论中概述的那样。
标签: visual-studio visual-studio-2015 build msbuild