コード例 #1
0
ファイル: Program.cs プロジェクト: siphillipson/cli
        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;
            }
        }
コード例 #2
0
ファイル: SlnFileExtensions.cs プロジェクト: williamlee33/cli
        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;
            }
        }