【问题标题】:Visual Studio Extensions - How to create a SolutionFolder inside a SolutionFolder?Visual Studio 扩展 - 如何在解决方案文件夹中创建解决方案文件夹?
【发布时间】:2018-09-16 22:45:08
【问题描述】:

根据我能找到的here,无法在 SolutionFolder 中添加 SolutionFolder:

Visual Studio 2005 及更高版本允许您将文件夹添加到 解决方案(称为解决方案文件夹),不仅要添加文件夹 到一个项目(Visual Studio .NET 已经允许的东西 2002)。解决方案文件夹可以嵌套,一个文件夹属于 解决方案(根解决方案文件夹)被建模为 EnvDTE.Project, 因此要将子解决方案文件夹添加到您拥有的根解决方案文件夹中 使用 EnvDTE.Project.ProjectItems.AddFolder 方法。然而,这 方法导致 NotImplementedException。

我现在正在尝试做同样的事情 - 在撰写该博文 7 年后,在 Visual Studio 2017 版本 15.8.4 中 - 不幸的是,我在尝试此操作时遇到了相同的 NotImplementedException。

是否有任何其他可能的方法可以从 Visual Studio 扩展创建这样的子解决方案文件夹?

【问题讨论】:

    标签: visual-studio visual-studio-2017 visual-studio-extensions vsix envdte


    【解决方案1】:

    Visual Studio 扩展 - 如何在 SolutionFolder 中创建 SolutionFolder?

    这是一个关于如何从选定文件夹创建解决方案文件夹的扩展,还包括该选定文件夹中的文件:Folder To Solution Folder

    消除将多个文件添加到解决方案文件夹的麻烦。只需使用 解决方案的上下文菜单,位于选项下方 创建一个新的解决方案文件夹,您现在可以找到“将文件夹添加为解决方案” 文件夹'。这将创建一个与您同名的解决方案文件夹 选择并将该文件夹内的项目添加到解决方案 文件夹。这不会移动磁盘上的文件。

    您可以查看源代码:https://github.com/ceciliasharp/Extension.FolderToSolutionFolder

    希望这会有所帮助。

    【讨论】:

    • 谢谢!这是一个很大的帮助,正是我所需要的!我也将发布实际代码作为答案,以防万一 Github 解决方案消失......
    【解决方案2】:

    因此,看来诀窍是将要在其中创建子文件夹的 SolutionFolder 获取为 EnvDTE.Project,然后获取其 Object 属性并进行转换作为SolutionFolder

    这将为您提供一个对象,您可以在该对象上使用文件夹名称调用“AddSolutionFolder”。

    using EnvDTE;
    using EnvDTE80;
    
    Solution2 solution = (Solution2)dte.Solution;
    
    // Adds a SolutionFolder (in the standard way) underneath the Solution and returns
    // a Project. That Project object is the same as what you would get when going
    // over your solution with solution.Projects and getting the folder you need
    Project solutionFolderAsProject = solution.AddSolutionFolder(folder.Name);
    
    SolutionFolder solutionFolderAsSolutionFolder = (SolutionFolder)solutionFolderAsProject.Object;
    
    Project subSolutionFolder = solutionFolderAsSolutionFolder.AddSolutionFolder(item.Name);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-15
      • 1970-01-01
      • 2012-12-23
      相关资源
      最近更新 更多