/// <summary> /// Adds the text template to projects. /// </summary> /// <param name="instance">The instance.</param> /// <param name="textTemplateInfos">The text template infos.</param> /// <param name="outputTextTemplateContentToTraceFile">if set to <c>true</c> [output text template content to trace file].</param> /// <returns></returns> public static IEnumerable <string> AddTextTemplateToProjects( this Solution2 instance, IEnumerable <TextTemplateInfo> textTemplateInfos, bool outputTextTemplateContentToTraceFile) { string method = "SolutionExtensions::AddTextTemplateToProjects "; TraceService.WriteLine(method); List <string> messages = new List <string>(); IEnumerable <Project> projects = instance.GetProjects(); IEnumerable <Project> projectItems = projects as Project[] ?? projects.ToArray(); foreach (TextTemplateInfo info in textTemplateInfos) { Project project = projectItems.FirstOrDefault(x => x.Name.EndsWith(info.ProjectSuffix)); if (project != null) { string context = project.Name + " (template=" + info.ShortTemplateName + ") fileName=" + info.FileName; TraceService.WriteLine(method + context); try { instance.DTE.StatusBar.Text = "Adding Text Template to project " + project.Name; if (project.AddTextTemplate(info.ProjectFolder, info.FileName, info.TextOutput, outputTextTemplateContentToTraceFile) != string.Empty) { messages.Add(info.FileName + " added to " + project.Name + " project (template=" + info.ShortTemplateName + ")"); } if (info.ChildItems != null) { foreach (TextTemplateInfo childItem in info.ChildItems) { TraceService.WriteLine("Adding child Text Template projectFolder=" + childItem.ProjectFolder + " fileName=" + childItem.FileName); try { project.AddTextTemplate( childItem.ProjectFolder, childItem.FileName, childItem.TextOutput, outputTextTemplateContentToTraceFile); } catch (Exception exception) { TraceService.WriteError(method + " Adding child Text Template exception=" + exception.Message); messages.Add(method + " Adding child Text Template exception=" + exception.Message); } } } } catch (Exception exception) { TraceService.WriteError(method + context + " exception=" + exception.Message); messages.Add(method + context + " exception=" + exception.Message); } } else { TraceService.WriteError(method + " cannot find project " + info.ProjectSuffix); foreach (string projectName in projectItems .Select(projectItem => projectItem.Name)) { TraceService.WriteError(method + " project " + projectName); messages.Add(info.FileName + " added to " + projectName + " project (template=" + info.ShortTemplateName + ")"); } } } return(messages); }