/// <summary> /// Adds the item template to project. /// </summary> /// <param name="instance">The instance.</param> /// <param name="templateInfos">The template infos.</param> /// <returns> /// The messages. /// </returns> public static IEnumerable <string> AddItemTemplateToProjects( this Solution2 instance, IEnumerable <ItemTemplateInfo> templateInfos) { string method = "SolutionExtensions::AddItemTemplateToProjects "; TraceService.WriteLine(method); List <string> messages = new List <string>(); IEnumerable <Project> projects = instance.GetProjects(); IEnumerable <Project> projectItems = projects as Project[] ?? projects.ToArray(); foreach (ItemTemplateInfo info in templateInfos) { Project project = projectItems.FirstOrDefault(x => x.Name.EndsWith(info.ProjectSuffix)); if (project != null) { string context = project.Name + " (template=" + info.TemplateName + ") fileName=" + info.FileName; TraceService.WriteLine(method + context); try { if (project.AddItemToFolderFromTemplate(info.TemplateName, info.FileName)) { messages.Add(info.FileName + " added to " + project.Name + " project (template=" + info.TemplateName + ")"); } } 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.TemplateName + ")"); } } } return(messages); }