Addin用于枚举源文件

时间:2011-07-10 12:39:54

标签: visual-studio add-in visual-studio-addins

我被要求开发一个通过C#解决方案的插件,并从源文件中提取所有文档并将其导出到HTML文件。我们不能使用普通的文档生成器,因为导出需要采用特定的格式。

我知道如何创建一个基本的插件,但不知道如何枚举源文件。

关于如何开始这个项目的任何想法/资源?

感谢。

1 个答案:

答案 0 :(得分:0)

以下是我用来搜索以给定string结尾的文件的一些代码。

结构类似于Visual Studio中的解决方案资源管理器:

Solution -> ProjectItems -> (Nested ProjectItems) -> FileNames

无论您的代码在何处执行,您都可以在解决方案中提取项目,然后在这些项目中提取ProjectItem。

var typeFileName = @"\MyClassName.cs";

// Search each Project in the Solution, exclude Unit Test Projects
foreach (Project item in _applicationObject.Solution.Projects.OfType<Project>().Where(p => !p.Name.EndsWith(".Tests")))
{
    // Search each ProjectItem recursively
    foreach (ProjectItem projectItem in item.ProjectItems)
    {
        RecursiveProjectItemSearch(projectItem, typeFileName);
    }
}

asdasd

private void RecursiveProjectItemSearch(ProjectItem projectItem, string typeFileName)
{
    for (short i = 0; i < projectItem.FileCount; i++)
    {
        var fileName = projectItem.FileNames[i];

        if (fileName.EndsWith(typeFileName))
        {
            // In my case, I want to open the file that I'm searching for
            _applicationObject.ItemOperations.OpenFile(fileName);
        }

        foreach(ProjectItem childProjectItem in projectItem.ProjectItems)
        {
            RecursiveProjectItemSearch(childProjectItem, typeFileName);
        }
    }
}

我不知道这是否是最佳方式,但它应该有效。鉴于上面的代码,您可以将其更改为执行File.Open()并阅读内容或类似内容。