Visual Studio 2010 — Сборка событий в проекте C ++

У меня есть событие после сборки в моем проекте C ++ Visual Studio 2010, который использует команду xcopy, но когда этот код ошибки возврата xcopy (> 0), все сборки тоже не удалось, и сообщение «сборка не удалась», как я могу повернуть ошибки чувствительности в событиях сборки?

Спасибо!

3

Решение

Вы можете использовать Exec задачи IgnoreExitCode:

<Target Name="MyAwesomePostBuildTarget" AfterTargets="Build">
<Exec IgnoreExitCode="true" Command="xcopy etc. etc." />
</Target>
5

Другие решения

Вы можете переопределить результат отказа (почти) любой пакетной CMD, добавив || exit /b 0 до конца команды. Пример:

del somefile.txt || exit /b 0

Таким образом, пакетные файлы работают немного как C. Вы можете сделать && условно выполнить команду, если предыдущая команда выполнена успешно, и || выполнить команду, когда предыдущая команда не удалась.

exit /b 0 говорит процессору CMD выйти из сценария и установить нулевой уровень ошибки (0). Никогда не забывайте включать ключ / b! Без этого CMD будет выходить из вызывающего сценария, а также из текущего сценария, что редко, если вообще когда-либо, является желаемым поведением.

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

Кстати, еще один полезный трюк — заставить команду замолчать:

xcopy srcfile destfile 1>nul 2>nul || exit /b 0

1 это стандартный вывод, и 2 это stderr. Оболочка Windows-программ, как известно, несовместима с тем, какой вывод они могут использовать, поэтому я обычно просто передаю оба или один из них.

1

По вопросам рекламы [email protected]