Visual studio 如何在Visual Studio生成事件中修改返回代码

Visual studio 如何在Visual Studio生成事件中修改返回代码,visual-studio,visual-studio-2010,command-line,Visual Studio,Visual Studio 2010,Command Line,是否可以修改VisualStudio构建事件中提交的命令的返回代码(我认为它也被称为errorlevel) 我正在运行命令taskkill/F/IM MyApp.vshost.exe,我希望该命令返回0,而实际上它返回128将所有输出重定向到临时文件,并在批处理文件中以代码0退出。这将有效地忽略来自taskkill的任何错误: killit.bat: taskkill /F /IM MyApp.vshost.exe > %temp%\out.txt 2>&1 exit /B

是否可以修改VisualStudio构建事件中提交的命令的返回代码(我认为它也被称为
errorlevel


我正在运行命令
taskkill/F/IM MyApp.vshost.exe
,我希望该命令返回
0
,而实际上它返回
128

将所有输出重定向到临时文件,并在批处理文件中以代码0退出。这将有效地忽略来自
taskkill
的任何错误:

killit.bat:

taskkill /F /IM MyApp.vshost.exe > %temp%\out.txt 2>&1
exit /B 0
现在在构建事件中调用killit.bat

更新在hege发布了他的答案后,我认为只要将批处理文件中的代码粘贴到构建事件中也应该可以,因为据我所知,VC中的构建事件始终在命令行上执行。事实上

taskkill /F /IM MyApp.vshost.exe > %temp%\out.txt 2>&1 || exit /B 0

作为一个构建事件,它也可以工作。但是仍然需要重定向。

尝试
taskkill/F/IM MyApp.vshost.exe | |退出/b 0

如接受答案的注释所示:

taskkill/F/IM MyApp.vshost.exe/fi“pid gt 0”


taskkill
带过滤器的不会返回错误。

Hmm,我担心我必须使用文件来执行此操作。
2>&1的作用是什么?将标准错误重定向到标准输出;如果未使用,VS仍将看到错误描述(如果有)并触发错误。请注意,在您的情况下,最好将MyApp.vshost.exe作为参数(类似$(OutName).vshost.exe)传递给bat文件,否则,您必须为每个应用程序维护一个文件。这对我来说很有效-我每次构建web应用程序时都试图启动和停止windows服务,因为该服务和web应用程序共享我正在编辑的类库。将其放在生成前/生成后事件中完成了操作(将开始与停止交换):sc stop WRQueueOutput>$(TargetDir)\serviceststartstopoutput.txt 2>&1 | |退出/B 0