如何在MSBuild中访问错误详情

3
我正在创建一个MSBuild项目,当发生错误时会发送详细的电子邮件。我正在使用MsBuild Community Tasks包中的Mail Task。但是我不知道如何将错误详细信息传递给此任务 - 是否有任何预定义的变量或其他内容可用于错误信息?
<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>
1个回答

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>

1
不错,但出现了这个错误:c:\AccuRev\Build_2012_01_02\ASA.Core.Services\ErrorHandlers.targets(24,9): error MSB3501: 无法从文件“mylog.txt”中读取行。该进程无法访问文件“c:\AccuRev\Build_2012_01_02\ASA.Core.Services\mylog.txt”,因为它正在被另一个进程使用。 - NealWalters
开始新的问题:http://stackoverflow.com/questions/8728883/email-errors-in-msbuild-readlinesfromfile-is-being-used-by-another-process - NealWalters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接