我正在通过构建过程模板中的 InvokeProcess活动运行 .bat 文件。
当脚本失败时,构建仍会继续并成功。我们如何使构建在当时失败?
我正在通过构建过程模板中的 InvokeProcess活动运行 .bat 文件。
当脚本失败时,构建仍会继续并成功。我们如何使构建在当时失败?
本文展示了如何根据控制台应用程序的退出代码失败。
配置构建活动后,从批处理文件中使用exit
命令。
用于exit /b 0
表示一切正常,或exit /b 1
表示出现错误。exit
命令结束批处理文件的执行,将 errorlevel/exitcode 设置为 '/b' 参数之后的值。
您可以使用 context.TrackBuildError 方法来标记构建错误。
您可以使用 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>
测试.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 Ibrahim Hashimi 的帖子