private ProjectItem GetPlaceholder(OutputFile outputFile) { var key = GetKey(outputFile); if (_placeholders.ContainsKey(key)) { return(_placeholders[key]); } else { ProjectItem pi = VsManager.GetTemplateProjectItem(_templateProjectItem.DTE, outputFile, _templateProjectItem); _placeholders.Add(key, pi); return(pi); } }
private void ProjectSync(ProjectItem templateProjectItem, IEnumerable <FileBuilder.OutputFile> keepFileNames) { var groupedFileNames = from f in keepFileNames group f by new { f.ProjectName, f.FolderName } into l select new { ProjectName = l.Key.ProjectName, FolderName = l.Key.FolderName, FirstItem = l.First(), OutputFiles = l }; _templatePlaceholderList.Clear(); foreach (var item in groupedFileNames) { ProjectItem pi = _vsManager.GetTemplateProjectItem(item.FirstItem, templateProjectItem); ProjectSyncPart(pi, item.OutputFiles); if (UseAutoFormatting) { FormatDocument(pi.ProjectItems); } if (pi.Name.EndsWith("txt4")) { _templatePlaceholderList.Add(_vsManager.GetProjectItemFullPath(pi)); } } // clean up bool hasDefaultItems = groupedFileNames.Any(f => string.IsNullOrEmpty(f.ProjectName) && string.IsNullOrEmpty(f.FolderName)); if (hasDefaultItems == false) { ProjectSyncPart(templateProjectItem, new List <OutputFile>()); } }