Pregunta

 msbuild MyProject.proj /fl /flp:v=detailed;logfile=mylog.txt
 msbuild MyProject.proj /t:ErrorEmail 

He implementado esto y funciona cuando hay errores. Pero también está enviando un correo electrónico cuando no hay errores. ¿Cómo puedo configurar una condición si el archivo está vacío, o hay un recuento de líneas 0 en las líneas de lecturaFILE?

> <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>
¿Fue útil?

Solución

Asumiendo ErrorFileContents no está vacío en caso de un error, puede iterar a través de sus elementos para establecer un indicador de condición.

   <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')"
       />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top