根据我发现的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扩展中创建此类子解决方案文件夹吗?
答案 0 :(得分:1)
Visual Studio扩展-如何在SolutionFolder内创建SolutionFolder?
以下是有关如何从选定文件夹创建解决方案文件夹的扩展,其中还包括该选定文件夹中的文件:Folder To Solution Folder。
消除了将多个文件添加到解决方案文件夹的麻烦。只需使用 解决方案的上下文菜单,位于选项的下方 创建新的解决方案文件夹,您现在会发现“将文件夹添加为解决方案 夹'。这将创建一个与您同名的解决方案文件夹 选择并将该文件夹内的项目添加到解决方案 夹。这不会移动磁盘上的文件。
您可以从以下位置查看源代码:https://github.com/ceciliasharp/Extension.FolderToSolutionFolder
希望这会有所帮助。
答案 1 :(得分:1)
因此,看来,诀窍是获取要在其中创建子文件夹的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);