2012-03-01 86 views
6

当我运行构建时,有时会看到我忘记的代码更改。所以我想取消构建。由于构建锁定了我的IDE,我必须使用Ctrl + Break,但是,它的响应速度不够快。如何使用命令行取消Visual Studio构建?

我正在寻找一种命令行方式,所以我可以在我的快速启动中创建一个批处理文件。 我试过这个命令:

Taskkill /IM aspnet_compiler.exe /F 

然而,这仅仅从建筑停止当前项目和下一个在我的多项目解决方案启动。

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

回答

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 +为我生成所有。 (不重建)。

快捷方式,因为当我看到一个被遗忘的代码更改时,我的手指通常仍然在该区域中。我的批量快捷键组合是CTRL + SHIFT + ALT + B

5

下停止建立对所有项目,整个的Visual Studio的所有实例:

taskkill /im msbuild.exe /f 
+0

该命令不起作用。当我的Visual Studio生成时,进程列表中没有MSBuild.exe。 – 2012-03-01 04:48:08

+0

Visual Studio不会将'MSBuild.exe'产生为单独的进程。它使用了MSBuild“框架”。它甚至不会启动'CSC.EXE'(C#编译器),顺便说一句,它也使用一个进程中的进程。 – 2012-03-01 06:40:40

+0

对不起 - 我是在C++模式下(为此它工作) – Fraser 2012-03-01 08:21:59

1

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

您可以通过获取process explorer并查看流程树来进行验证。你会注意到devenv永远不会产生msbuild,csc或任何其他编译器。但是devenv的确在CPU和I/O上出现了峰值。

12

我不得不添加/t标志以杀死整个MSBuild.exe进程树。那就是:

taskkill /im msbuild.exe /f /t 

就我而言,我从GNU Emacs的启动MSBuild.exe出于某种原因,GNU Emacs是并不总是能够杀死MSBuild.exe如果我想重新启动它。我用这个作为备份。我在VS2010中做C++。

+1

'/ t'标志是做什么的?我们需要理解,而不仅仅是一个答案的配方。 – eh9 2012-11-09 17:40:16

+0

/T告诉Windows终止进程以及任何子进程。我注意到MSBuild.exe可以在运行时产生子进程。如果不杀死所有的孩子,汇编可能会处于不可预知的状态(或者可能会继续以某种方式运行)。观察的一个好方法是使用sysinternals工具Process Explorer(procexp.exe)。你可以看到MSBuild.exe产生了几个孩子。 – 2012-11-19 22:43:52

-1

转到菜单BUILD,然后单击选项:取消。在VS2013中进行测试。

相关问题