获取Visual Studio解决方案文件和文件夹

时间:2013-07-04 06:05:29

标签: c# visual-studio

我正在尝试开发CustomControl,我需要枚举Solution中的文件和文件夹。反正有没有这样做?

- 编辑: 场景是: 实际上我正在尝试创建一个简单的绑定控件,它只枚举从指定类继承的类,然后用户可以选择类并将其绑定到相关的Form控件,为此我在设计模式中找不到任何有用的东西,这就是我要求枚举解决方案文件和文件夹的内容。

2 个答案:

答案 0 :(得分:2)

我认为最好的方法是通过Visual Studio Extension API中的EnvDTE类。内置了一个很好的示例:打开Macro Explorer并导航到Utilities / ListProj。然后右键单击并选择“编辑”以显示在Visual Basic中实现它的代码。这应该为您提供足够的信息,以便能够在C#中复制逻辑(类和方法名称相同)

Macro explorer

它的想法很简单 - 你只是递归地枚举ProjectItems()成员。每个节点本身可能还有ProjectItems()个成员

Dim project As Project
project = DTE.ActiveSolutionProjects(0)
ListProjAux(project.ProjectItems(), 0)

Sub ListProjAux(ByVal projectItems As EnvDTE.ProjectItems, ByVal level As Integer)
  Dim projectItem As EnvDTE.ProjectItem
  For Each projectItem In projectItems
    projectItems2 = projectItem.ProjectItems
       ListProjAux(projectItems2, level + 1)
  Next
End Sub

请注意,我在此示例中省略了一些空检查,但它们位于ListProj示例中。

答案 1 :(得分:0)

这将非常简单。

是的,您可以获取项目解决方案文件的路径,并可以处理其中的文件。

string solutionPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;