Захватить код выхода из консольного приложения
В Visual Build Professional (Pro, vbp) есть "Коды успешного завершения", где я могу ввести значения из белого списка...(когда я определяю вызов внешнего.exe)
Когда я создаю вызов к внешнему.exe, как я могу захватить код возврата / код выхода и поместить его в макрос?
По сути, я пытаюсь сделать в Visual Build Pro то, что делает приведенная ниже msbuild.
А именно, захватить значение "ExitCode" для свойства (макрос на языке vbp)... с именем MyExitErrorCode
<Target Name="ExecuteSomeEXETarget">
<Exec Command='"C:\Some.exe"' ContinueOnError='true'>
<Output TaskParameter="ExitCode" PropertyName="MyExitErrorCode"/>
</Exec>
<Message Text="The exit code is $(MyExitErrorCode)"/>
<Error Text="Error while executing Some EXE" Condition="'$(MyExitErrorCode)' > '0'" />
</Target>
1 ответ
Вы можете сделать "Запустить программу"
В "Команде" укажите путь к вашему exe.
На вкладке "Дополнительно" установите переключатель "Продолжить строительство".
..
Затем вы можете захватить макрос% RUNPROGRAM_EXITCODE%
..
Например, после "Запустить программу" (шаг), создайте "Сообщение журнала" (шаг) и поместите его в
Hello '%RUNPROGRAM_EXITCODE%' !
.......
Не уверен, почему макрос не отображается в списке глобальных макросов.
Теперь, когда я знаю волшебное имя макроса, можно найти документацию
http://www.kinook.com/VisBuildPro/Manual/index.htm?visualbuild5_x.htm
• Состояние сборки действия "Выполнить программу" всегда будет значением из BuildStatusEnum, а не кодом завершения процесса. Код выхода доступен во временном макросе RUNPROGRAM_EXITCODE.
http://www.kinook.com/VisBuildPro/Manual/index.htm?runprogramaction.htm
Действие "Запустить программу" создает шаг для запуска любого внешнего приложения, программы, пакетного файла или командного сценария. Visual Build запускает и отслеживает приложение, захватывает любые выходные данные и записывает их на панель "Вывод" (и файл журнала, если он включен) и завершает работу приложения, если сборка остановлена.
После завершения шага создаются или обновляются следующие временные макросы: RUNPROGRAM_EXITCODE: Если установлен флажок "Ожидание", код завершения процесса будет сохранен в этом макросе. RUNPROGRAM_PROCESSID: Если опция Wait не отмечена, идентификатор процесса запущенного процесса будет сохранен в этом макросе.