internal static string GetOutputPath(DTE dte, FileBuilder.OutputFile file, string defaultPath) { if (string.IsNullOrEmpty(file.ProjectName) == true && string.IsNullOrEmpty(file.FolderName) == true) { return(defaultPath); } Project prj = null; ProjectItem item = null; if (string.IsNullOrEmpty(file.ProjectName) == false) { prj = GetProject(dte, file.ProjectName); } if (string.IsNullOrEmpty(file.FolderName) == true && prj != null) { return(Path.GetDirectoryName(prj.FullName)); } else if (prj != null && string.IsNullOrEmpty(file.FolderName) == false) { item = GetAllProjectItemsRecursive(prj.ProjectItems).FirstOrDefault(i => i.Name == file.FolderName); if (item == null) { throw new ArgumentNullException($"No folder was found with the name {file.FolderName} within the project {file.ProjectName}"); } } else if (String.IsNullOrEmpty(file.FolderName) == false) { item = GetAllProjectItemsRecursive(dte.ActiveDocument.ProjectItem.ContainingProject.ProjectItems).FirstOrDefault(i => i.Name == file.FolderName); } if (item != null) { return(GetProjectItemFullPath(item)); } return(defaultPath); }
internal ProjectItem GetTemplateProjectItem(FileBuilder.OutputFile file, ProjectItem defaultItem) { if (string.IsNullOrEmpty(file.ProjectName) && string.IsNullOrEmpty(file.FolderName)) { return(defaultItem); } string templatePlaceholder = GetTemplatePlaceholderName(defaultItem); string itemPath = Path.GetDirectoryName(file.FileName); string fullName = Path.Combine(itemPath, templatePlaceholder); Project prj = null; ProjectItem item = null; if (string.IsNullOrEmpty(file.ProjectName) == false) { prj = GetProject(file.ProjectName); } if (string.IsNullOrEmpty(file.FolderName) == true && prj != null) { return(FindProjectItem(prj.ProjectItems, fullName)); } else if (prj != null && string.IsNullOrEmpty(file.FolderName) == false) { item = GetAllProjectItemsRecursive(prj.ProjectItems).FirstOrDefault(i => i.Name == file.FolderName); } else if (string.IsNullOrEmpty(file.FolderName) == false) { item = GetAllProjectItemsRecursive(_dte.ActiveDocument.ProjectItem.ContainingProject.ProjectItems).First(i => i.Name == file.FolderName); } if (item != null) { return(FindProjectItem(item.ProjectItems, fullName)); } return(defaultItem); }