Получить имена файлов в проекте VS2010, используя T4 - PullRequest
1 голос
/ 31 мая 2011

Я пытаюсь использовать T4 с VS2010 для перечисления файлов в проекте, запуска пользовательского инструмента для файлов с определенным расширением, а затем для добавления сгенерированных файлов в решение. Тем не менее, я не могу понять, как получить имена файлов в моих проектах. Я посмотрел на EnvDTE и не смог найти функцию, которая бы делала это. Имеет ли смысл мой подход? Я пытаюсь использовать T4 больше как инструмент сценариев VS2010, чем что-либо еще.

1 Ответ

2 голосов
/ 31 мая 2011

Удачи. Нет, серьезно. EnvDTE не самый дружественный интерфейс.

Короче говоря, из Solution EnvDTE.Solution вы должны выполнить итерации проектов внутри решения ( Solution.Projects ), а затем перечислить ( рекурсивно! ) ProjectItems в проекте ( Project.ProjectItems ) и получить имена файлов для каждого ProjectItem ( ProjectItem.FileNames ).

Есть много вопросов, связанных с этим. ProjectItems может представлять узел References в Project, папку или другие элементы, которые на самом деле не имеют связанных с ними файлов. Кроме того, один ProjectItem может иметь несколько файлов (например, class.cs и class.designer.cs). И, вдобавок ко всему, DTE - просто дерьмовая оболочка COM и ощущается как единое целое.

...