Visual Studio Extensions - 如何在SolutionFolder中创建SolutionFolder?

问题描述 投票:0回答:2

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

Visual Studio 2005及更高版本允许您向解决方案(称为解决方案文件夹)添加文件夹,而不仅仅是将文件夹添加到项目(Visual Studio .NET 2002已经允许的内容)。解决方案文件夹可以嵌套,并且属于解决方案的文件夹(根解决方案文件夹)被建模为EnvDTE.Project,因此要将子解决方案文件夹添加到根解决方案文件夹,您必须使用EnvDTE.Project.ProjectItems .AddFolder方法。但是,此方法会导致NotImplementedException。

我正在尝试做同样的事情 - 在Visual Studio 2017版本15.8.4中编写该博客文章7年后 - 不幸的是,我在尝试时得到了相同的NotImplementedException。

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

visual-studio visual-studio-2017 visual-studio-extensions vsix envdte
2个回答
1
投票

Visual Studio Extensions - 如何在SolutionFolder中创建SolutionFolder?

以下是有关如何从所选文件夹创建解决方案文件夹的扩展,其中还包括所选文件夹中的文件:Folder To Solution Folder

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

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

希望这可以帮助。


1
投票

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

这将为您提供一个对象,您可以使用foldername调用“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);
© www.soinside.com 2019 - 2024. All rights reserved.