C#EnvDTE将项目从Solution移动到SolutionFolder

V. *_*riy 10 c# visual-studio envdte visual-studio-extensions

有必要将项目从中移动SolutionSolutionFolder.我试图从解决方案中删除项目并将其添加回文件夹中,EnvDTE SolutionFolder.AddFromFile(Filepath line);因为在文档中没有找到如何在解决方案中移动项目(或为项目安装新的父项).但是在MRU列表中以这种方式添加项目(开始页面和Windows开始菜单)会出现这个项目.

如何在不添加MRU列表的情况下将项目移动到SolutionFolder?

不好的英语

此时添加功能:

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;
}
Run Code Online (Sandbox Code Playgroud)

小智 2

SolutionFolder 和 Project Class 不提供将解决方案中的包含项目移动到解决方案文件夹而不删除项目的方法。

如果该项目包含在您的解决方案中,您需要将其删除并将其添加到解决方案文件夹中。