2013-12-13 12 views
1

Я запускаю .bat-файл via the InvokeProcess активность в шаблоне процесса сборки.Как сбой выполненной сборки TFS при сбое вызванного пакетного скрипта?

Когда сценарий выходит из строя, сборка продолжается и продолжается. Как мы можем сделать сборку сбоев в то время?

ответ

2

This В статье показано, как сбой в зависимости от кода выхода консольного приложения.

После того, как операция сборки настроена из вашего командного файла, используйте команду exit.

Использовать exit /b 0, чтобы сигнализировать, что все идет нормально, или exit /b 1, чтобы сигнализировать, что есть ошибка. Команда exit завершает выполнение командного файла, устанавливая значение errorlevel/exitcode в значение после параметра '/ b'.

+0

Я поставил линию 'выхода/б 1' в сигнал моего .bat-файла завершится неудачно, но сборка все еще выполняется. Статья, которую вы давали, - это как-то о настройке процесса. Я просто использую собственный 'InvokeProcess'. –

+1

@ NamG.VU, 'InvokeProcess' только запускает программу и возвращает' Result' (код выхода/уровень ошибок). Но необходимо указать условие на значение результата, чтобы сбой сборки. Вот почему переменная удерживает значение возвращаемого значения и 'if' над переменной, чтобы выбросить ошибку. –

+0

Обновите свой ответ, чтобы включить значение «Результат» и как его использовать в 'if' над этой переменной, чтобы сбой сборки. Спасибо! –

0

Вы можете использовать метод context.TrackBuildError для отметки ошибки построения.

+0

Внутри InvokeProcess мы можем использовать 'context.TrackBuildError'? –

0

Вы можете использовать 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