private void AddSolutionFolders(SlnFile slnFile, SlnProject slnProject) { var solutionFolders = slnProject.GetSolutionFoldersFromProject(); if (solutionFolders.Any()) { var nestedProjectsSection = slnFile.Sections.GetOrCreateSection( "NestedProjects", SlnSectionType.PreProcess); string parentDirGuid = null; foreach (var dir in solutionFolders) { var solutionFolder = new SlnProject { Id = Guid.NewGuid().ToString("B").ToUpper(), TypeGuid = ProjectTypeGuids.SolutionFolderGuid, Name = dir, FilePath = dir }; slnFile.Projects.Add(solutionFolder); if (parentDirGuid != null) { nestedProjectsSection.Properties[solutionFolder.Id] = parentDirGuid; } parentDirGuid = solutionFolder.Id; } nestedProjectsSection.Properties[slnProject.Id] = parentDirGuid; } }
public static void AddSolutionFolders(this SlnFile slnFile, SlnProject slnProject) { if (slnProject == null) { throw new ArgumentException(); } var solutionFolders = slnProject.GetSolutionFoldersFromProject(); if (solutionFolders.Any()) { var nestedProjectsSection = slnFile.Sections.GetOrCreateSection( "NestedProjects", SlnSectionType.PreProcess); var pathToGuidMap = slnFile.GetSolutionFolderPaths(nestedProjectsSection.Properties); string parentDirGuid = null; var solutionFolderHierarchy = string.Empty; foreach (var dir in solutionFolders) { solutionFolderHierarchy = Path.Combine(solutionFolderHierarchy, dir); if (pathToGuidMap.ContainsKey(solutionFolderHierarchy)) { parentDirGuid = pathToGuidMap[solutionFolderHierarchy]; } else { var solutionFolder = new SlnProject { Id = Guid.NewGuid().ToString("B").ToUpper(), TypeGuid = ProjectTypeGuids.SolutionFolderGuid, Name = dir, FilePath = dir }; slnFile.Projects.Add(solutionFolder); if (parentDirGuid != null) { nestedProjectsSection.Properties[solutionFolder.Id] = parentDirGuid; } parentDirGuid = solutionFolder.Id; } } nestedProjectsSection.Properties[slnProject.Id] = parentDirGuid; } }