将项目从解决方案移动到解决方案文件夹的C# EnvDTE方法

10
需要将项目从 Solution 移动到 SolutionFolder。我正在尝试使用 EnvDTESolutionFolder.AddFromFile(Filepath line); 将项目从解决方案中移除并添加回文件夹中,因为文档中找不到如何移动项目到解决方案(或安装项目的新父级)的方法。但是以这种方式添加项目时,这些项目会出现在 MRU 列表(起始页和 Windows 起始菜单)中。 如何将项目移动到 SolutionFolder 而不添加到 MRU 列表?

对于糟糕的英语抱歉

当前的函数代码:

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;
}
1个回答

2

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

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


你的意思是它会删除启动项目吗? - Zhanglong Wu - MSFT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接