我正在尝试开发CustomControl
,我需要枚举Solution
中的文件和文件夹。反正有没有这样做?
- 编辑: 场景是: 实际上我正在尝试创建一个简单的绑定控件,它只枚举从指定类继承的类,然后用户可以选择类并将其绑定到相关的Form控件,为此我在设计模式中找不到任何有用的东西,这就是我要求枚举解决方案文件和文件夹的内容。
答案 0 :(得分:2)
我认为最好的方法是通过Visual Studio Extension API中的EnvDTE
类。内置了一个很好的示例:打开Macro Explorer并导航到Utilities / ListProj。然后右键单击并选择“编辑”以显示在Visual Basic中实现它的代码。这应该为您提供足够的信息,以便能够在C#中复制逻辑(类和方法名称相同)
它的想法很简单 - 你只是递归地枚举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;