首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取VS外接程序或DXCore插件的解决方案/项目文件列表

获取VS外接程序或DXCore插件的解决方案/项目文件列表
EN

Stack Overflow用户
提问于 2009-09-16 18:33:42
回答 3查看 17.3K关注 0票数 14

我正在尝试为Visual编写一个外接程序,除其他外,它需要跟踪Visual解决方案中的每个文件。我知道我需要订阅哪些事件(打开解决方案、在其中添加/删除/编辑文件时,项目也是如此),但我不知道如何从其中任何一个中实际获得文件列表。

我最近安装了CodeRush,并一直在使用DXCore框架。我很高兴它在插件的方法,但我仍然没有看到一个明显的方法来获得一个解决方案中的文件列表。

因此,总结一下:如何通过Visual 或 DXCore在解决方案中获得一个可靠的文件列表以及它的项目?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-16 18:39:30

在中可以轻松地使用DTE。

您可以使用项目接口在解决方案中获得项目列表。

您可以使用ProjectItem接口获取项目中的项列表。

有关更多信息,我建议在控制项目与解决方案上阅读。

票数 4
EN

Stack Overflow用户

发布于 2009-09-16 21:57:54

谢谢,里德;你所链接的那篇文章让我在几分钟内得到了概念的证明。

由于我觉得它是相关的,下面是我收集ProjectItems的迭代和递归方法。我是在DXCore中这样做的,但同样的想法也适用于原始的(DXCore只是一个看起来比SDK更好看的包装器)。“解决方案”、“项目”、“项目”和“ProjectItem”对象就在EnvDTE中。

设置项目

代码语言:javascript
复制
EnvDTE.Solution solution = CodeRush.ApplicationObject.Solution;
EnvDTE.Projects projects = solution.Projects;

对项目进行迭代以提取ProjectItems

代码语言:javascript
复制
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所做的递归

代码语言:javascript
复制
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;
}
票数 18
EN

Stack Overflow用户

发布于 2013-11-06 12:03:56

请参阅EnvDTE :获取所有项目( SolutionFolder PITA)

即使项目位于子文件夹中,此解决方案也能出色地获得解决方案中的所有项目。

一定要阅读代码下面的注释,因为它指出了一个基本的修复方法,使用它来获取DTE2而不是原始代码,否则它不会得到Visual的正确实例:

代码语言:javascript
复制
DTE2 dte2 = Package.GetGlobalService(typeof(DTE)) as DTE2;

(对代码进行了更新,以包括上述修复程序)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1434720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档