Ejemplo n.º 1
0
        private void CreateHierarchy(SlnProject project)
        {
            FileInfo fileInfo = new FileInfo(project.FullPath);

            DirectoryInfo directoryInfo = fileInfo.Directory;

            if (_pathToSlnFolderMap.TryGetValue(directoryInfo.FullName, out SlnFolder childFolder))
            {
                childFolder.Projects.Add(project);

                return;
            }

            childFolder = new SlnFolder(directoryInfo.FullName);

            childFolder.Projects.Add(project);

            _pathToSlnFolderMap.Add(directoryInfo.FullName, childFolder);

            directoryInfo = directoryInfo.Parent;

            while (!string.Equals(directoryInfo.FullName, _rootFolder.FullPath, StringComparison.OrdinalIgnoreCase))
            {
                if (!_pathToSlnFolderMap.TryGetValue(directoryInfo.FullName, out SlnFolder folder1))
                {
                    folder1 = new SlnFolder(directoryInfo.FullName);
                    _pathToSlnFolderMap.Add(directoryInfo.FullName, folder1);
                }

                childFolder.Parent = folder1;

                if (!folder1.Folders.Contains(childFolder))
                {
                    folder1.Folders.Add(childFolder);
                }

                directoryInfo = directoryInfo.Parent;

                childFolder = folder1;
            }

            if (!_rootFolder.Folders.Contains(childFolder))
            {
                _rootFolder.Folders.Add(childFolder);
                childFolder.Parent = _rootFolder;
            }
        }