2013-12-13 16 views

回答

2

This文章根據控制檯應用程序的退出代碼顯示如何失敗。

從批處理文件中配置構建活動後,使用exit命令。

使用exit /b 0表示一切正常,或exit /b 1表示發生錯誤。 exit命令結束批處理文件的執行,將errorlevel/exitcode設置爲'/ b'參數後面的值。

+0

我沒放線'退出/ B 1'到指示我的.bat文件失敗,但構建仍然成功。你給出的文章是關於自定義流程活動的。我只使用本地的'InvokeProcess'。 –

+1

@ NamG.VU,'InvokeProcess'只是啓動一個程序並返回'Result'(退出代碼/錯誤級別)。但有必要指出結果值的條件以使構建失敗。這就是變量保留返回值和變量的'if'來拋出錯誤的原因。 –

+0

請更新您的答案以包含'Result'值以及如何在該變量的'if'中使用它以使構建失敗。謝謝! –

0

您可以使用context.TrackBuildError方法來標記構建錯誤。

+0

在InvokeProcess中,我們如何使用'context.TrackBuildError'? –

0

您可以使用MSBUILD調用bat文件。使用Exit代碼我們可以在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

相關問題