Visual studio 2010 Visual Studio预生成事件:批处理文件退出代码为-1

Visual studio 2010 Visual Studio预生成事件:批处理文件退出代码为-1,visual-studio-2010,command-line,batch-file,exit-code,Visual Studio 2010,Command Line,Batch File,Exit Code,为了解决这个问题,我创建了一个简单的批处理文件 taskkill /IM iisexpress.exe exit 0 并将该批处理文件设置为预生成事件 如果IIS Express确实在运行,那么它的效果会非常好。但是,如果IIS Express未运行,则生成将失败,并显示以下输出: 找不到进程“iisexpress.exe”。 命令“E:\Software\Util\KillIisExpress.bat”退出,代码为-1 如果使用taskkill命令作为预构建事件而不是批处理文件,则错误将更改

为了解决这个问题,我创建了一个简单的批处理文件

taskkill /IM iisexpress.exe
exit 0
并将该批处理文件设置为预生成事件

如果IIS Express确实在运行,那么它的效果会非常好。但是,如果IIS Express未运行,则生成将失败,并显示以下输出:

找不到进程“iisexpress.exe”。
命令“E:\Software\Util\KillIisExpress.bat”退出,代码为-1

如果使用taskkill命令作为预构建事件而不是批处理文件,则错误将更改为

“taskkill/IM iisexpress.exe”命令退出,代码为128

我如何修改批处理文件,以便无论taskkill返回什么退出代码,批处理文件都会以0的退出代码返回,从而使VS构建成功?

您可以使用

taskkill /FI "IMAGENAME eq iisexpress.exe"

如果iisexpress.exe未运行,将输出一条信息消息,但返回0。您不需要批处理文件,只需将该命令添加为预生成事件命令行。

如果直接运行
taskkill
而不是使用
call taskkill
,并且没有
iisexpress.exe
运行,taskkill将直接退出非零,始终绕过
exit 0