msbuild: Anyway to show summary and use verbosity=minimal
我有一个用于构建.net解决方案的批处理文件,并且正在尝试使详细程度降至最低,该详细程度仅显示正在构建的项目以及任何警告和/或错误,但也希望最后看到摘要。警告和错误的数量加上构建时间。
我已经尝试了详细程度,/ v和/ cpl的多种组合,但是看来您只能得到太多的输出摘要或正确的最小输出,而没有摘要
有什么想法吗?
预先感谢
您可以按照以下说明编写自定义记录器:http://msdn.microsoft.com/zh-cn/library/ms171471.aspx
这里有一些代码可以帮助您入门:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public class SummaryLogger : Logger { int warningCount = 0; int errorCount = 0; public override void Initialize(IEventSource eventSource) { eventSource.WarningRaised += eventSource_WarningRaised; eventSource.ErrorRaised += eventSource_ErrorRaised; eventSource.BuildFinished += eventSource_BuildFinished; } void eventSource_WarningRaised(object sender, BuildWarningEventArgs e) { warningCount++; Console.WriteLine("Warning:" + e.Message); } void eventSource_ErrorRaised(object sender, BuildErrorEventArgs e) { errorCount++; Console.WriteLine("Error:" + e.Message); } void eventSource_BuildFinished(object sender, BuildFinishedEventArgs e) { Console.WriteLine("MSBuild Finished:" + errorCount +" errors |" + warningCount +" warnings."); } } |
此记录器记录警告,错误并汇总错误和警告的数量。您需要为时间和项目添加一些代码,以便它正是您想要的。
要使用它,请调用MSBuild并添加以下参数:
1 | /nologo /noconsolelogger /logger:pathTo/SummaryLogger.dll |
一个想法是从日志文件中提取所需的信息。
赞,
1 2 | Step 1: Redirect your msbuild outputs to a log.txt Step 2: At the end of the batch file run findstr cmd to look for desired text |
示例:
1 2 3 4 5 6 7 8 | @echo off setlocal ... MSBuild /nologo [path to project1 or sln1] [options] >> log.txt ... MSBuild /nologo [path to project2 or sln2] [options] >> log.txt ... findstr /irc:"Build*" /c:".*Warning(s)" /c:".*Error(s)" /c:"Time Elapsed.*" log.txt |
希望这会有所帮助!