使用T4获得VS2010项目中的文件名

问题描述

| 我正在尝试将T4与VS2010一起使用来枚举项目中的文件,对具有特定扩展名的文件运行自定义工具,然后将生成文件添加解决方案中。但是,我似乎无法弄清楚如何获得项目中文件名称。我看了看EnvDTE,找不到能做到这一点的函数。我的方法甚至有意义吗?我正在尝试将T4更像VS2010脚本工具一样使用。     

解决方法

        祝好运。不,认真EnvDTE不是最友好的界面。 长话短说,从解决方案EnvDTE.Solution,您必须迭代解决方案中的项目(Solution.Projects),然后枚举(递归!)项目中的ProjectItems(Project.ProjectItems),并获取每个ProjectItem(ProjectItem。文件名)。 这涉及很多绊脚石。 ProjectItems可以表示Project中的“引用”节点,文件夹或其他实际上没有与之关联的文件的项目。此外,单个ProjectItem可能具有多个文件(请考虑class.cs和class.designer.cs)。而且,最重要的是,DTE只是一个糟糕的COM包装器,感觉就像一个包装。