public EnvDTE.Project CreateSolutionFolder(string relativePath, EnvDTE.Project parentFolder) { if (string.IsNullOrEmpty(relativePath)) { return(null); } var arr = relativePath.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries); if (parentFolder == null) { var folders = CurrentSolution.GetFolders(); var selected = folders.FirstOrDefault(x => x.Name.ToLower() == arr.First().ToLower()); if (selected == null) { selected = (CurrentSolution as EnvDTE80.Solution2).AddSolutionFolder(arr.First()); } if (arr.Length == 1) { return(selected); } else { return(CreateSolutionFolder(string.Join(@"\", arr.Skip(1).Take(arr.Length - 1)), selected)); } } else { var folders = parentFolder.GetFolders(); var selected = folders.FirstOrDefault(x => x.Name.ToLower() == arr.First().ToLower()); if (selected == null) { selected = (parentFolder.Object as EnvDTE80.SolutionFolder).AddSolutionFolder(arr.First()); } if (arr.Length == 1) { return(selected); } else { return(CreateSolutionFolder(string.Join(@"\", arr.Skip(1).Take(arr.Length - 1)), selected)); } } }