2016-12-15 56 views
9

有必要从Solution项目移到SolutionFolder。我试图从解决方案中删除项目,并使用EnvDTESolutionFolder.AddFromFile(Filepath line);将其添加回文件夹,因为在文档中未找到如何在解决方案中移动项目(或为项目安装新的父项)。但是在MRU列表(起始页和Windows开始菜单)中添加这样的项目后,会出现此项目。C#EnvDTE移动从解决方案项目SolutionFolder

如何将一个项目SolutionFolder不增加MRU列表?

SRY的英语不好

加入的功能,因为它是在这一刻:

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

SolutionFolder和项目类不提供方法来移动包括在解决方案项目解决方案文件夹而不删除项目。

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

+0

为什么有此举措的项目会出现在起始页面上,以及如何避免它? –

+0

你的意思是它会删除启动项目? –

+0

使用IWizard创建解决方案(约束10个项目)时,它会显示在Visual Studio的开始页面上的“最近”列中(链接到sln文件的一个链接),并且确定。 但是,如果我从该解决方案中删除该项目并再次添加该项目,该项目将显示在此列中。该列充满了一个解决方案的10个项目,看起来不太好。如何避免这种情况? –