in TeamCity.MSBuild.Logger/EventHandlers/ProjectFinishedHandler.cs [39:92]
public void Handle(ProjectFinishedEventArgs e)
{
if (e == null) throw new ArgumentNullException(nameof(e));
var projectStartedEvent = _buildEventManager.GetProjectStartedEvent(e.BuildEventContext);
// ReSharper disable once LocalizableElement
if (projectStartedEvent == null) throw new ArgumentException($"Project finished event for {e.ProjectFile} received without matching start event", nameof(e));
if (_context.Parameters.ShowPerfSummary)
{
_performanceCounterFactory.GetOrCreatePerformanceCounter(e.ProjectFile, _context.ProjectPerformanceCounters).AddEventFinished(projectStartedEvent.TargetNames, e.BuildEventContext, e.Timestamp);
}
if (_context.IsVerbosityAtLeast(LoggerVerbosity.Normal) && projectStartedEvent.ShowProjectFinishedEvent)
{
_context.LastProjectFullKey = _context.GetFullProjectKey(e.BuildEventContext);
if (!_context.Parameters.ShowOnlyErrors && !_context.Parameters.ShowOnlyWarnings)
{
_messageWriter.WriteLinePrefix(e.BuildEventContext, e.Timestamp, false);
_logWriter.SetColor(Color.BuildStage);
var targetNames = projectStartedEvent.TargetNames;
var projectFile = projectStartedEvent.ProjectFile ?? string.Empty;
if (string.IsNullOrEmpty(targetNames))
{
if (e.Succeeded)
{
_messageWriter.WriteMessageAligned(_stringService.FormatResourceString("ProjectFinishedPrefixWithDefaultTargetsMultiProc", projectFile), true);
_hierarchicalMessageWriter.FinishBlock();
}
else
{
_messageWriter.WriteMessageAligned(_stringService.FormatResourceString("ProjectFinishedPrefixWithDefaultTargetsMultiProcFailed", projectFile), true);
_hierarchicalMessageWriter.FinishBlock();
}
}
else
{
if (e.Succeeded)
{
_messageWriter.WriteMessageAligned(_stringService.FormatResourceString("ProjectFinishedPrefixWithTargetNamesMultiProc", projectFile, targetNames), true);
_hierarchicalMessageWriter.FinishBlock();
}
else
{
_messageWriter.WriteMessageAligned(_stringService.FormatResourceString("ProjectFinishedPrefixWithTargetNamesMultiProcFailed", projectFile, targetNames), true);
_hierarchicalMessageWriter.FinishBlock();
}
}
}
_deferredMessageWriter.ShownBuildEventContext(projectStartedEvent.ProjectBuildEventContext);
_logWriter.ResetColor();
}
_buildEventManager.RemoveProjectStartedEvent(e.BuildEventContext);
}