謝謝,裏德;你鏈接的文章讓我有足夠的能力在幾分鐘內得到概念證明。
因爲我覺得它是相關的,這裏是我收集ProjectItems的迭代和遞歸手段。我在DXCore中做了這個,但同樣的想法適用於原始的Visual Studio SDK(DXCore僅僅是一個更好看的SDK封裝)。 「解決方案」,「項目」,「項目」和「ProjectItem」對象就在EnvDTE中。
設置項目
EnvDTE.Solution solution = CodeRush.ApplicationObject.Solution;
EnvDTE.Projects projects = solution.Projects;
遍歷項目拉ProjectItems
var projects = myProjects.GetEnumerator();
while (projects.MoveNext())
{
var items = ((Project)projects.Current).ProjectItems.GetEnumerator();
while (items.MoveNext())
{
var item = (ProjectItem)items.Current;
//Recursion to get all ProjectItems
projectItems.Add(GetFiles(item));
}
}
最後,我做的遞歸讓所有ProjectItems在活動解決方案
ProjectItem GetFiles(ProjectItem item)
{
//base case
if (item.ProjectItems == null)
return item;
var items = item.ProjectItems.GetEnumerator();
while (items.MoveNext())
{
var currentItem = (ProjectItem)items.Current;
projectItems.Add(GetFiles(currentItem));
}
return item;
}
-1,不,它很容易的沒有,這個答案是一個快速谷歌搜索的只是結果。即使項目接口提供了可枚舉的ProjectItems,但它只包含項目中的頂級項目。項目文件夾需要遍歷,只有選中的文件。多個文件名也可能使項目更加複雜。 – 2015-06-23 14:18:48