MSBuild中的电子邮件错误 - ReadLinesFromFile“正由另一个进程使用”

时间:2012-01-04 14:57:14

标签: msbuild error-handling email-integration

我正在尝试从这里实现答案: How to access error details in MSBuild

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

<Target Name="ErrorEmail">
   <ReadLinesFromFile
      File="mylog.txt"
      Lines="_ErrorLines"
      />
   <Mail
      SmtpServer="mysrv"
      From="me@mysrv"
      To="error@mysrv"
      Subject="An error occured"
      Body="Error details: @(_ErrorLines, '%0D%0A')"
      />
</Target>

看起来很优雅,但我收到了这个错误:

  

C:\ AccuRev的\ Build_2012_01_02 \ MyApp的\ ErrorHandlers.targets(24,9):   错误MSB3501:无法读取文件“mylog.txt”中的行。该   进程无法访问该文件   'c:\ AccuRev \ Build_2012_01_02 \ MyApp \ mylog.txt'因为它   正在被另一个进程使用

1 个答案:

答案 0 :(得分:1)

mylog.txt文件被锁定,因为您使用相同的文件进行构建日志和ReadLinesFromFile任务。

编辑:尝试执行MSBuild 2次。首先建立您的项目,第二次发送电子邮件。使用distributedFileLogger命令行开关和/flp1:logfile=errors.txt;errorsonly命令行参数将所有错误记录到errors.txt。然后,您可以将此文件附加到电子邮件中,而无需发送整个构建日志。