Подтвердить что ты не робот

Ошибки глотания в этапах предварительной сборки в Visual Studio 2010

В моем решении есть множество проектов, одним из которых является служба Windows; У меня есть предварительный шаг, чтобы остановить службу и шаг postbuild, чтобы перезапустить ее (таким образом, exe windows exe не заблокирован, когда VS строит/перезаписывает его).

on pre-build: 
net stop myservice

on post-build:
net start myservice

Если служба не запущена, когда я запускаю сборку, команда net stop завершается с ошибкой и предотвращает продолжение сборки.

Что я могу сделать, чтобы по-прежнему форсировать сборку, даже если шаг предварительной сборки завершился неудачно?

4b9b3361

Ответ 1

Я понял это - вам просто нужно добавить в конце следующий оператор:

SET ERRORLEVEL = 0

или просто:

EXIT 0

Ответ 2

Я знаю, что это старый пост, но у меня недавно был этот вопрос. Я хотел убить процесс, который я строю, если он в настоящее время работает, и обнаружил, что могу сделать:

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

2>nul 1>nul без Exit 0, или наоборот, похоже, не работает. Я должен сделать оба.

Также стоит отметить, что это использование Visual Studio Express 2012.

Я нашел решение, рассматривая этот вопрос, а также в этом блоге

2 > nul 1 > nul проглотит stderr и stdout из команды. EXIT 0 будет уверен, что событие сборки возвращает 0.

Ответ 3

Нет необходимости переделывать stdout, просто stderr. Кроме того, set errorlevel позволяет вам иметь дополнительные строки позже, если вам нужно. Выход немедленно прекратится.

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

Работает в VS 2017.

Ответ 4

Оберните команды net в пакетном файле и используйте exit /B 0

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

Ответ 5

Встраивает ли команда в исполняемый файл, который всегда возвращает 0, разрешает вашу проблему?

в c вызове

system("net stop myservice")