2011-04-30 73 views
3

我正在创建MSBuild项目,当发生错误时将发送详细的电子邮件。我正在使用来自MsBuild社区任务包的邮件任务。但我不知道如何将错误细节传递给这个任务 - 是否有任何预定义的变量有错误或什么?如何访问MSBuild中的错误详细信息

<Target Name="All"> 
    <CallTarget Targets="DoSomething" /> 
    <OnError ExecuteTargets="ErrorEmail"/> 
</Target> 

<Target Name="ErrorEmail"> 
    <Mail SmtpServer="mysrv" From="[email protected]" To="[email protected]" Subject="An error occured" 
     Body="Error details: " /> 
</Target> 

回答

1

唯一预定义的属性是$(MSBuildLastTaskResult),但它在你的例子中只会有值“假”,这是没有用的。您需要在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="[email protected]" 
     To="[email protected]" 
     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):呃 ROR MSB3501:无法读取线文件“mylog.txt”。该进程不能 访问文件'c:\ AccuRev \ Build_2012_01_02 \ ASA.Core.Services \ mylog.txt',因为它正在被另一个进程使用。 – NealWalters 2012-01-04 14:41:49

+0

已开始的新问题:http://stackoverflow.com/questions/8728883/email-errors-in-msbuild-readlinesfromfile-is-being-used-by-another-process – NealWalters 2012-01-04 17:40:01

相关问题