EnvDTE
これを行う最善の方法は、Visual 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 サンプルに含まれています。