void TargetFinished(object sender, TargetFinishedEventArgs e) { var startInfo = _targetsStarted.Pop(); // var execInfo = new TargetExecutionInfo(startInfo.TargetStartedArgs, e); var execInfo = new TargetExecutionInfo(startInfo.TargetStartedArgs, e); // see if the target is already in the executed list TargetExecutionInfo previoudExecInfo; this._targetsExecuted.TryGetValue(e.TargetName, out previoudExecInfo); if (previoudExecInfo != null) { execInfo.TimeSpent = execInfo.TimeSpent.Add(previoudExecInfo.TimeSpent); } this._targetsExecuted[execInfo.Name] = execInfo; AppendLine(string.Format("####TargetFinished:{0}", e.Message.EscapeMarkdownCharacters())); }