我從來沒有寫過任何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