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()));
        }
        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()));
        }