private string GetTemplateDetailsReportLineFor(TemplateReportSummaryInfo templateInfo)
        {
            Debug.Assert(templateInfo != null);
            Debug.Assert(templateInfo.Template != null);

            var template = templateInfo.Template;

            if (template.Symbols == null)
            {
                template.Symbols = new List <TemplateSymbolInfo>();
            }

            var parameters = GetParametersFrom(template.Symbols);

            if (parameters == null)
            {
                parameters = new List <TemplateSymbolInfo>();
            }

            var sb = new StringBuilder();

            sb.Append(ReplaceComma(template.Name));
            sb.Append(",");
            sb.Append(ReplaceComma(template.TemplatePackId));
            sb.Append(",");
            sb.Append(ReplaceComma(template.GetTemplateType()));
            sb.Append(",");
            sb.Append(ReplaceComma(template.Author));
            sb.Append(",");
            sb.Append(ReplaceComma(template.SourceName));
            sb.Append(",");
            sb.Append(ReplaceComma(template.DefaultName));
            sb.Append(",");
            sb.Append(ReplaceComma(template.Baseline));
            sb.Append(",");
            sb.Append(ReplaceComma(template.GetLanguage()));
            sb.Append(",");
            sb.Append(ReplaceComma(GetTemplateDetailsReportStringFor(template.PrimaryOutputs)));
            sb.Append(",");
            sb.Append(ReplaceComma(GetTemplateDetailsStringForTags(template.Tags)));
            sb.Append(",");
            sb.Append(ReplaceComma(template.Identity));
            sb.Append(",");
            sb.Append(ReplaceComma(template.GroupIdentity));
            sb.Append(",");
            sb.Append(ReplaceComma(GetTemplatePackReportStringForHostFiles(template)));
            sb.Append(",");
            sb.Append(ReplaceComma(template.LocalFilePath));
            sb.Append(",");
            sb.Append(template.Symbols.Count);
            sb.Append(",");
            sb.Append(parameters.Count);
            sb.Append(",");
            sb.Append(ReplaceComma(GetTemplateDetailsClassificationsStringFor(template.Classifications)));

            return(sb.ToString());
        }
        private string GetTemplateDetailsReportLineFor(TemplateReportSummaryInfo templateInfo)
        {
            Debug.Assert(templateInfo != null);
            Debug.Assert(templateInfo.Template != null);

            var template = templateInfo.Template;
            var sb       = new StringBuilder();

            sb.Append(ReplaceComma(ReplaceComma(template.Name)));
            sb.Append(",");
            sb.Append(ReplaceComma(template.TemplatePackId));
            sb.Append(",");
            sb.Append(ReplaceComma(template.GetTemplateType()));
            sb.Append(",");
            sb.Append(ReplaceComma(template.Author));
            sb.Append(",");
            sb.Append(ReplaceComma(template.SourceName));
            sb.Append(",");
            sb.Append(ReplaceComma(template.DefaultName));
            sb.Append(",");
            sb.Append(ReplaceComma(template.Baseline));
            sb.Append(",");
            sb.Append(ReplaceComma(template.GetLanguage()));
            sb.Append(",");
            sb.Append(ReplaceComma(GetTemplateDetailsReportStringFor(template.PrimaryOutputs)));
            sb.Append(",");
            sb.Append(ReplaceComma(GetTemplateDetailsStringForTags(template.Tags)));
            sb.Append(",");
            sb.Append(ReplaceComma(template.Identity));
            sb.Append(",");
            sb.Append(ReplaceComma(template.GroupIdentity));
            sb.Append(",");
            sb.Append(ReplaceComma(GetTemplatePackReportStringForHostFiles(template)));
            sb.Append(",");
            sb.Append(ReplaceComma(template.LocalFilePath));

            return(sb.ToString());
        }