2012-01-10 58 views
0
msbuild MyProject.proj /fl /flp:v=detailed;logfile=mylog.txt 
msbuild MyProject.proj /t:ErrorEmail 

我已经实现了这一点,它有错误时工作。 但是,当没有错误时它也会发送电子邮件。 如果文件为空,或者ReadLinesFromFile中有0行数,我该如何设置条件?电子邮件MSBuild错误 - 只有当有错误

> <Target Name="ErrorEmail">  
> <ReadLinesFromFile 
>  File="mylog.txt" 
>  Lines="_ErrorLines" 
>  /> 
> <MSBuild.Community.Tasks.Mail 
>  SmtpServer="mailhost.amsa.com" 
>  To="$(ErrorEmails)" 
>  From="$(FromEmail)" 
>  Subject="Build failure for $(SolutionName)" 
>  Body="Error details: @(ErrorFileContents, '%0D%0A')" 
>  /> 
> </Target> 

回答

1

假设ErrorFileContents不出错的情况下空的,你可以通过它的项目重复设置的条件旗标。

<CreateProperty Value="true"> 
     <Output Condition="'%(ErrorFileContents.Identity)' != ''" 
      TaskParameter="Value" 
      PropertyName="SendMail" /> 
    </CreateProperty> 

    <MSBuild.Community.Tasks.Mail Condition="'$(SendMail)' == true" 
     SmtpServer="mailhost.amsa.com" 
     To="$(ErrorEmails)" 
     From="$(FromEmail)" 
     Subject="Build failure for $(SolutionName)" 
     Body="Error details: @(ErrorFileContents, '%0D%0A')" 
     /> 
+0

是CreateProperty 4.0功能吗?我在3.5上,并得到这个错误:“元素下的元素无法识别” – NealWalters 2012-01-11 16:31:53

+0

啊 - 看起来它必须在目标下。 – NealWalters 2012-01-11 16:33:19