在Visual Studio扩展中,我想获取所有项目及其名称:
var service = (DTE) Package.GetGlobalService(typeof (SDTE));
var projects = service.Solution.Projects;
foreach (Project project in projects)
//....
这种方法工作得很好,但有一个小问题:project变量返回项目的确切数量。但是如果项目位于解决方案的文件夹中,则项目的全名可能为EMPTY。(我的意思是当项目在解决方案的文件夹中合并时的解决方案的结构)
如何正确获得这些项目?
1条答案
按热度按时间omqzjyyz1#
这里有一个解决方案。这家伙至少是指环王:http://www.wwwlicious.com/2011/03/29/envdte-getting-all-projects-html/
来自博客的相关信息,以防它消失(就像Stack Overflow上的许多其他答案一样):
DTE2.Solution.Projects将只为您提供解决方案下的顶级项列表,因此会遗漏嵌套在解决方案文件夹中的任何项目。为了找到这些讨厌的小蠕虫,您需要深入研究从项目上的ProjectItems集合访问的ProjectItem.SubProject属性。为了解决所有问题,如果您有嵌套的解决方案文件夹,则需要进行一些递归。