Вы можете использовать MSBUILD для вызова файла bat. Используя код выхода, мы можем вывести из строя сборку, когда файл bat не работает.
MSBuild файла wrapper.proj
<Project DefaultTargets="Demo" ToolsVersion="3.5"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<BatchFile>test.bat</BatchFile>
<FromMSBuild>FromMSBuild</FromMSBuild>
<build_configurations></build_configurations>
</PropertyGroup>
<Target Name="Demo">
<Message Text="Executing batch file $(BatchFile)" Importance="high"/>
<PropertyGroup>
<_Command>$(BatchFile) $(build_configurations) </_Command>
</PropertyGroup>
<Exec Command="$(_Command)">
<Output PropertyName="CommandExitCode" TaskParameter="ExitCode"/>
</Exec>
<Message Text="CommandExitCode: $(CommandExitCode)"/>
</Target>
</Project>
test.bat
ECHO OFF
IF (%1)==() goto Start
SET fromMSBuild=1
:Start
ECHO fromMSBuild:%fromMSBuild%
REM ***** Perform your actions here *****
set theExitCode=101
GOTO End
:End
IF %fromMSBuild%==1 exit %theExitCode%
REM **** Not from MSBuild ****
ECHO Exiting with exit code %theExitCode%
exit /b %theExitCode%
Благодаря @Sayed Ибрагим Хашими за его Post
Я поставил линию 'выхода/б 1' в сигнал моего .bat-файла завершится неудачно, но сборка все еще выполняется. Статья, которую вы давали, - это как-то о настройке процесса. Я просто использую собственный 'InvokeProcess'. –
@ NamG.VU, 'InvokeProcess' только запускает программу и возвращает' Result' (код выхода/уровень ошибок). Но необходимо указать условие на значение результата, чтобы сбой сборки. Вот почему переменная удерживает значение возвращаемого значения и 'if' над переменной, чтобы выбросить ошибку. –
Обновите свой ответ, чтобы включить значение «Результат» и как его использовать в 'if' над этой переменной, чтобы сбой сборки. Спасибо! –