Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }