如何使用命令行取消Visual Studio的构建?

10
当我运行构建时,有时会看到我忘记的代码更改。所以我想取消构建。由于构建锁定了我的IDE,我必须使用Ctrl+Break,但是它的响应速度不够快。
我正在寻找一种命令行方法,以便我可以只需点击我的快速启动中的批处理文件。 我尝试了这个命令:
Taskkill /IM aspnet_compiler.exe /F

然而,这只能停止当前项目的构建,多项目解决方案中的下一个项目会启动。

我如何使用命令行取消构建?

7个回答

24

为了杀死整个MSBuild.exe进程树,我必须添加/t标志。也就是说:

taskkill /im msbuild.exe /f /t

在我的情况下,我从Gnu Emacs启动MSBuild.exe,但出于某种原因,如果我想重新启动它,Gnu Emacs并不总是能够杀死MSBuild.exe。我把这个作为备份。我在VS2010中使用C++。

1
“/t”标志是什么意思?我们需要理解,而不仅仅是答案的步骤。 - eh9
/T 命令告诉 Windows 终止进程以及任何子进程。我注意到 MSBuild.exe 在运行时可能会生成子进程。如果不终止所有子进程,则编译可能会处于不可预测的状态(或以某种方式继续运行)。观察的好方法是使用 Sysinternals 工具 Process Explorer(procexp.exe)。您可以看到 MSBuild.exe 生成多个子进程。 - Tom Weiss

7
以下操作可停止所有项目的构建,适用于所有 Visual Studio 实例:
taskkill /im msbuild.exe /f

这个命令无效。当我的Visual Studio构建时,进程列表中没有MSBuild.exe。 - Valamas
1
Visual Studio不会将MSBuild.exe作为单独的进程启动,而是在进程中使用MSBuild“框架”。顺便提一下,它甚至不会启动CSC.EXE(C#编译器),而是也使用内部进程进行编译。 - Christian.K

1

我有这个带闪光的Bash脚本。

@echo off

REM by jnh from http://www.chris.com/ascii/index.php?art=objects/explosives
echo "     _.---------------  "
echo " _--                  --_  "
echo "-                        -)   "
echo "|                         |   "
echo " \._                   _./  "
echo "    ```--. . , . .--'''   "
echo "          | |   |    "
echo "       .-=||  | |=-.    "
echo "        `-=#$$$$$#=-'   "
echo "          | ;  :|    "
echo "  _____.,-#$$$$$#&#~,._____   "
 
echo NUKE IT ALLLLLLL

REM kills all MSBuild processes
taskkill /F /IM MSBuild.exe /T

REM Just holds command window open long enough to admire explosion.
timeout 1


1
我想出了一个粗略的方法,对我来说效果很好。
我有以下批处理脚本。
@echo off
echo KILL BILLd
for /L %%i in (1,1,10) do (
   Taskkill /IM aspnet_compiler.exe /F
   timeout 1
)

(以上,10 = 秒)

然后我在同一个文件夹中创建了该批处理脚本的快捷方式,这使我能够进行其他操作。

  • 为我的快速启动栏分配图标图像。
  • 将其设置为最小化执行。
  • 分配全局快捷键组合。

在VS2010中,我已经将CTRL+SHIFT+B设置为我的全部构建。(不是重新构建)。

对于快捷方式,由于我的手指通常仍然停留在该区域,当我看到遗忘的代码更改时,我的批处理快捷键组合是CTRL+SHIFT+ALT+B


1

不幸的是,Visual Studio 是编译器。 aspnet_compiler 用于编译视图,这就是为什么您会在列表中看到它生成的原因。

您可以通过获取 process explorer 并查看进程树来进行验证。您会注意到 devenv 从未生成 msbuild、csc 或任何其他编译器。但是 devenv 的 CPU 和 I/O 会急剧上升。


0

实际上,我们也可以使用资源监视器的GUI来完成它。 输入图像描述

例如,当我们编译一个项目时,一些文件被占用,如“无法复制”等等。

步骤:

任务管理器 ->

性能 ->

资源监视器 ->

相关处理程序 ->

搜索“被占用的文件名”。

这种方法的优点是直观易懂,不需要记忆DOS命令,但缺点是需要多次搜索和操作。


-1

进入菜单 BUILD,然后点击选项:CANCEL。在 VS2013 中测试过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接