我正在创建MSBuild Project,它会在发生错误时发送详细的电子邮件。我正在使用MsBuild社区任务包中的邮件任务。但我不知道如何将错误细节传递给此任务 - 是否有任何预定义的变量有错误或什么?
<Target Name="All">
<CallTarget Targets="DoSomething" />
<OnError ExecuteTargets="ErrorEmail"/>
</Target>
<Target Name="ErrorEmail">
<Mail SmtpServer="mysrv" From="me@mysrv" To="error@mysrv" Subject="An error occured"
Body="Error details: " />
</Target>
答案 0 :(得分:1)
唯一预定义的属性是$(MSBuildLastTaskResult),但在您的示例中,它只会具有值“false”,这是无用的。您需要在DoSomething中设置错误属性,或者确保已创建日志文件(请参阅msbuild文件记录器参数)并在电子邮件中发送日志文件内容。考虑这样的事情:
> msbuild MyProject.proj /fl /flp:v=detailed;logfile=mylog.txt
<Target Name="ErrorEmail">
<ReadLinesFromFile
File="mylog.txt"
Lines="_ErrorLines"
/>
<Mail
SmtpServer="mysrv"
From="me@mysrv"
To="error@mysrv"
Subject="An error occured"
Body="Error details: @(_ErrorLines, '%0D%0A')"
/>
</Target>