2012-01-10 5 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

+0

ああ - それはターゲットの下にあるように見えます。 – NealWalters

関連する問題