Надстройка для перечисления исходных файлов - PullRequest
0 голосов
/ 10 июля 2011

Меня попросили разработать надстройку, которая проходит через решение C #, извлекает всю документацию из исходных файлов и экспортирует их в файл HTML.Мы не можем использовать обычные генераторы документов, поскольку экспорт должен быть в определенном формате.

Я знаю, как создать базовый надстройку, но понятия не имею, как выполнить перечисление через исходные файлы.

Любые идеи / ресурсы о том, как начать этот проект?

Спасибо.

1 Ответ

0 голосов
/ 15 ноября 2011

Вот код, который я использую для поиска файла, заканчивающегося данной string.

Структура похожа на Обозреватель решений в Visual Studio:

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

Где бы ни выполнялся ваш код, вы можете открыть Projects в решении, а затем ProjectItems в этих проектах.

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() и прочитать содержимое или что-то подобное.

...