2013-07-04 132 views
3

我正在嘗試開發CustomControl,我需要枚舉Solution中的文件和文件夾。無論如何要做到這一點?獲取Visual Studio解決方案文件和文件夾

- 編輯: 的方案是: 其實我試圖創建一個枚舉僅是從一個指定的類繼承,然後用戶可以選擇類,並將其綁定到相關窗體的控件類的簡單綁定控制,爲此我在設計模式中找不到任何有用的東西,這就是我要求列舉解決方案文件和文件夾的方法。

+0

它是一個文件系統,我認爲你可以做到這一點..我會'嘗試這個肯定 –

+0

是的我知道,但我只想要解決方案中包含的文件。 – saber

+0

深入瞭解文件屬性... hmm –

回答

2

我認爲要做到這一點的最好辦法是通過在Visual Studio擴展API在EnvDTE類。內置了一個很好的示例:打開Macro Explorer並導航到Utilities/ListProj。然後右鍵單擊並選擇「編輯」以顯示在Visual Basic中實現它的代碼。這應該給你足夠的信息能夠複製在C#中的邏輯(類和方法名是相同的)

Macro explorer

它的想法很簡單 - 你只列舉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樣本。

0

這會很簡單。

是的,你可以得到項目解決方案文件的路徑,並可以處理它裏面的文件。

string solutionPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName; 
+0

這將返回整個文件並確定排除文件和文件夾。 – saber

+1

排除的文件和文件夾將僅在Visual Studio中顯示。在文件夾結構中沒有像排除或包含文件的概念。所以當你到這個位置時,所有排除和包含的文件都將可用。所以你可以檢索所有的文件和文件夾。 –

+1

這將返回解決方案文件夾路徑。並從中你必須檢索想要的文件。 –

相關問題