电子邮件MSBuild错误-仅当存在错误时

电子邮件MSBuild错误-仅当存在错误时,msbuild,msbuildcommunitytasks,Msbuild,Msbuildcommunitytasks,我已经实现了这一点,当出现错误时它就会工作。 但它也会在没有错误时发送电子邮件。 如果文件为空,或者ReadLinesFromFile中的行数为0,如何设置条件 msbuild MyProject.proj /fl /flp:v=detailed;logfile=mylog.txt msbuild MyProject.proj /t:ErrorEmail > >File=“mylog.txt” >Lines=“\u ErrorLines” > /> >SmtpServer=“

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

 msbuild MyProject.proj /fl /flp:v=detailed;logfile=mylog.txt
 msbuild MyProject.proj /t:ErrorEmail 
>
>File=“mylog.txt”
>Lines=“\u ErrorLines”
>       />
>SmtpServer=“mailhost.amsa.com”
>To=“$(错误电子邮件)”
>From=“$(FromEmail)”
>Subject=“为$(SolutionName)生成失败”
>Body=“错误详细信息:@(ErrorFileContents,%0D%0A)”
>       />
>  
假设发生错误时ErrorFileContents不是空的,您可以迭代其项以设置条件标志

> <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>


CreateProperty是否是4.0功能?我在3.5上,得到了这个错误:“元素下的元素无法识别”啊-看起来它必须在目标下。
   <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')"
       />