3

我正在尝试开发一个CustomControl,我需要枚举里面的文件和文件夹Solution。有没有办法做到这一点?

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

4

2 回答 2

2

我认为最好的方法是通过EnvDTEVisual Studio Extension API 中的类。有一个很好的内置示例:打开宏资源管理器并导航到 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

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

于 2013-07-04T08:38:43.010 回答
0

这将非常简单。

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

string solutionPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;
于 2013-07-04T06:19:58.627 回答