我有一个TFS版本,其中包含一个调用控制台应用程序的构建过程模板(xaml)。每当控制台应用程序返回消息(即Console.WriteLine("Starting Build")
)时,构建会将此解释为错误,并且tfs将其标记为“部分失败”。
如何从控制台应用程序向构建日志返回一条消息,该消息不会导致构建失败?我应该看一下从构建日志中显示的控制台应用程序返回消息的另一种方法吗?或者我是否必须使用外部日志记录方法,例如写入数据库/ log4net等。
更新:我正在更改的工作流程未使用InvokeProcess。我更正了这一点,并且显示错误消息并且构建仍然失败。您可以在下面看到我试图将错误写为“WriteBuildError”和“WriteBuildMessge”。仅显示WriteBuildError,并且构建仍然失败。我错过了什么?
<mtbwa:InvokeProcess DisplayName="InvokeProcess" FileName="["""C:\app.exe"""]" sap2010:WorkflowViewState.IdRef="InvokeProcess_3" Result="[ExitCode]">
<mtbwa:InvokeProcess.ErrorDataReceived>
<ActivityAction x:TypeArguments="x:String">
<ActivityAction.Argument>
<DelegateInArgument x:TypeArguments="x:String" Name="errOutput" />
</ActivityAction.Argument>
<mtbwa:WriteBuildError sap2010:WorkflowViewState.IdRef="WriteBuildError_9" Message="["Handle Error Build Error: " + ErrorMessage]" />
</ActivityAction>
</mtbwa:InvokeProcess.ErrorDataReceived>
<mtbwa:InvokeProcess.OutputDataReceived>
<ActivityAction x:TypeArguments="x:String">
<ActivityAction.Argument>
<DelegateInArgument x:TypeArguments="x:String" Name="stdOutput" />
</ActivityAction.Argument>
<Sequence DisplayName="Handle Output" sap2010:WorkflowViewState.IdRef="Sequence_40">
<Assign sap2010:WorkflowViewState.IdRef="Assign_3">
<Assign.To>
<OutArgument x:TypeArguments="x:String">[ErrorMessage]</OutArgument>
</Assign.To>
<Assign.Value>
<InArgument x:TypeArguments="x:String">[If(Not String.IsNullOrWhiteSpace(ErrorMessage), Environment.NewLine + ErrorMessage, "") + stdOutput]</InArgument>
</Assign.Value>
</Assign>
<mtbwa:WriteBuildMessage sap2010:WorkflowViewState.IdRef="WriteBuildMessage_6" Importance="[Microsoft.TeamFoundation.Build.Client.BuildMessageImportance.High]" Message="["Build Message: " + ErrorMessage]" mva:VisualBasic.Settings="Assembly references and imported namespaces serialized as XML namespaces"
/>
<mtbwa:WriteBuildError sap2010:WorkflowViewState.IdRef="WriteBuildError_10" Message="["Build Error: " + ErrorMessage]" />
</Sequence>
</ActivityAction>
</mtbwa:InvokeProcess.OutputDataReceived>
答案 0 :(得分:1)
您可以使用CodeActivity进行日志记录。说明:Send information to the build log
答案 1 :(得分:0)
它基于应用程序的退出代码。它不是导致错误的消息,因为应用程序正在退出时代码不是0.