我正在尝试从这里实现答案: 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'因为它 正在被另一个进程使用
答案 0 :(得分:1)
mylog.txt文件被锁定,因为您使用相同的文件进行构建日志和ReadLinesFromFile任务。
编辑:尝试执行MSBuild 2次。首先建立您的项目,第二次发送电子邮件。使用distributedFileLogger命令行开关和/flp1:logfile=errors.txt;errorsonly命令行参数将所有错误记录到errors.txt。然后,您可以将此文件附加到电子邮件中,而无需发送整个构建日志。