我从来没有写过任何Visual Studio宏,但这可能是你在找什么。
projectName = DTE.Solution.SolutionBuild.StartupProjects(0)
For Each project In DTE.Solution.Projects
If (project.ConfigurationManager IsNot Nothing) Then
' It's a project!
If (project.UniqueName = projectName) Then Return project
Else
If (project.ProjectItems IsNot Nothing) Then
For Each projectItem In project.ProjectItems
If (projectItem.SubProject IsNot Nothing) Then
' TODO: Recurse on projectItem.SubProject
End If
Next
End If
End If
Next
我在那里留下了“TODO,因为你需要实际拉了这一点成,如果你正在寻找对付嵌套(子)项目,你可以递归调用的函数。
我从this link得到了这个解决方案,虽然它是Visual Studio 2005时代的素材,但它可能会让你朝着正确的方向前进。
+1作为链接。我会尝试一下并让你知道。 – Mrchief 2011-08-02 02:38:47
这工作完美无瑕(虽然它的一种黑客)!如果有人能找到更好的解决方案,我会保持开放状态,否则这将是公认的答案。 – Mrchief 2011-08-02 14:28:25
@Mrchief很高兴听到。我不知道这是不是一个黑客,但只是不幸的命名?看起来这些宏的API并没有因各种VS更新而发生显着改变,可能是为了防止不必要的向后兼容性破坏。 IIRC Visual Studio 2003没有解决方案文件夹或嵌套项目的概念。所以也许那时候命名是完美的,但现在不是那么多。 – ckittel 2011-08-02 15:09:41