简体   繁体   中英

Swallowing errors in pre-build steps in Visual Studio 2010

My solution has a bunch of projects one of which is a windows service; I have a prebuild step to stop the service and a postbuild step to restart it (this way the windows service exe is not locked when VS is building/overwriting it).

on pre-build: 
net stop myservice

on post-build:
net start myservice

If the service is not running while I'm starting the build, the net stop command fails and that prevents the build from proceeding.

What can I do to still force the build even if the pre-build step failed?

I figured it out - you simply need to add the following statement at the end:

SET ERRORLEVEL = 0

or simply:

EXIT 0

I know this is an old post, but I recently had this issue as well. I wanted to kill the process that I was building if it was currently running, and found that I could do:

taskkill /f /im $(TargetName).exe 2>nul 1>nul
Exit 0

2>nul 1>nul without Exit 0 , or vice versa, doesn't seem to work. I have to do both.

Also worth noting this is using Visual Studio Express 2012.

I found the solution when looking into this issue as well on this blog

The 2>nul 1>nul will swallow the stderr and stdout from the command. The EXIT 0 will make sure the build event returns 0.

There is no need to redirrect stdout, just stderr. Also, set errorlevel allows you to have extra lines later if you need. Exit will terminate immediately.

taskkill /f /im:$(TargetFileName) 2>nul &set errorlevel=0

Works in VS 2017.

Wrap your net commands in a batch file and use exit /B 0

http://ss64.com/nt/exit.html

Would embedding the command in an executable that always returns 0 solve your issue?

in c call

system("net stop myservice")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM