none
C# EnvDTE Перемещение проектов внутри решения RRS feed

  • Общие обсуждения

  • Необходимо переместить проект из решения в папку решения программно. Пытался удалять проект из решения и добавлять его снова в папку с помощью EnvDTE SolutionFolder.AddFromFile(string filePath); т.к. не нашёл в документации функции перемещения проекта по решению(или установки нового родителя). И всё казалось-бы работает так-как нужно, однако при добавлении проектов таким образом на Start Page в Колонке быстрого доступа появляются проекты добавленные в решение (о_О).

    Как переместить проект внутри решения не передобавляя проект(не засоряя панель быстрого запуска проектов)?

    Функция добавления как она есть на данный момент:

    protected Project AddProjectToSolutionFolder(Project project1, SolFolderTypes solutionFolderType)
    {
        try
        {
            Solution2 solution = (Solution2)((DTE2)base._dteObject).Solution;
    
            string projFullname = project1.FullName;
    
            string solutionFolderName = solutionFolderType == SolFolderTypes.Folder1 ? "Folder1" : "Folder2";
    
            Project project = GetSolutionSubFolder(solution, solutionFolderName);
    
            if (project != null)
            {
                SolutionFolder folder = (SolutionFolder)project.Object;
                solution.Remove(project1);
                project1 = folder.AddFromFile(projFullname);
            }
        }
        catch (Exception e)
        {
        }
        return project1;
    }
    
    private static Project GetSolutionSubFolder(Solution2 solution, string subfolder)
    {
        Projects projects = solution.Projects;
        Project folder = projects.Cast<Project>().FirstOrDefault(p => string.Equals(p.Name, subfolder));
    
        if (folder == null)
            folder = solution.AddSolutionFolder(subfolder);
    
        return folder;
    }

    14 февраля 2017 г. 13:12