如何在Visual Studio构建事件中修改返回代码

9

在 Visual Studio 的构建事件中,是否可能修改命令的返回代码(我认为也称为errorlevel)?

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

3个回答

15

在批处理文件中将所有输出重定向到一个临时文件并以代码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

作为构建事件也能起作用。但重定向仍然是必需的。


哦,我担心我必须使用文件来做那件事。2>&1是什么意思? - Otiel
将标准错误重定向到标准输出;如果不这样做,VS仍然会看到错误描述(如果有的话)并触发一个错误。请注意,在您的情况下,最好将MyApp.vshost.exe作为参数传递给bat文件(类似于$(OutName).vshost.exe),否则您将不得不为每个应用程序维护一个文件。 - stijn
这对我很有用 - 我试图在每次构建我的Web应用程序时启动和停止Windows服务,因为服务和Web应用程序共享我正在编辑的类库。将此放入预/后生成事件中即可解决问题(将开始与停止交换):sc stop WRQueueOutput > $(TargetDir)\ServiceStartStopOutput.txt 2>&1 || exit /B 0 - Chris Smith

2

尝试使用 taskkill /F /IM MyApp.vshost.exe || exit /b 0 命令。


1

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