2013-04-18 3 views
2

У меня есть решение с несколькими проектами. Один из проектов, нужно только построить, если оба два события, в случае предварительной сборки, выход с кодом ошибки 0.Событие предварительной сборки Visual Studio; Проверка кода выхода для каждого события

Так я думал, что я мог бы сделать следующее:

«C: \ Путь \ К \ Binary1.exe»& "C: \ путь \ к \ binary2.exe"

в моем тестовом сценарии что-то пойдет не так, чтобы Binary1.exe выходит с ненулевым значением. Но визуальная студия все равно продолжает строить проект. Когда я запускаю командную строку события pre-build event в cmd и echo% errorlevel%, я вижу, что код выхода отличен от нуля.

Когда я только положить

«C: \ Путь \ К \ Binary1.exe»

в случае предварительной сборки, сборка останавливается и собственная ошибка показана в Error List окно Visual Studio.

Я уверен, что Binary1.exe выходит с ненулевым значением, так как он также показывает окно сообщения перед выходом.

Я могу придумать одно решение. Binary1.exe вызывает Binary2.exe и выходит с ненулевым кодом выхода, когда Binary2.exe выходит с ненулевым кодом выхода. Но это не очень гибкое решение.

Резюмируя: Как я могу запустить несколько предварительно построить события и остановить ПОСТРОЕНИЕ, когда одна из команд возвращает ненулевое значение?

ответ

0

Если два проекта находятся в одном решении, вы можете установить зависимость в Visual studio. Щелкните правой кнопкой мыши по решению в проводнике решений и выберите «Зависимости проектов».

Задайте «последний» проект в зависимости от первых двух. В этом случае Visual Studio будет строить в правильном порядке и прекратит строительство, если одна из зависимостей не будет построена. (Visual Studio 2013)

+0

Сво не о зависимостях проекта. Это о событии предварительной сборки, которое должно завершиться неудачно, если один из исполняемых файлов, вызванных в событии предварительной сборки, завершится с ошибкой. Мой вопрос больше о синтаксисе события pre-build (или синтаксисе cmd вообще?). –

2

Я думаю yuou можно сделать следующим образом:

run command 1 
if ERRORLEVEL 1 (
    exit /b 1 
    ) 
run command 2 
+0

или вы можете проверить переменную окружения командной оболочки следующим образом: 'if% errorlevel% == 0 (Do something)'. – RBT