我制作了一个简单的设计时模板,它使用驻留在同一个项目中的枚举。该模板为该枚举类型中的每个变量创建了一个类定义。
我注意到无论如何更改和保存.tt文件会使它再次出现c#代码。我希望我可以设置解决方案,这样如果我更改枚举然后保存,那么模板也可能再次生成源。那样当我想添加一个新类型时,我可以添加一个变量枚举定义,也许只需按保存。
目前我必须这样做:
所以,也许有办法让模板“检测”其使用的另一个源的变化, 并表现得像是自己被修改了?
答案 0 :(得分:3)
首先安装T4 Toolbox。它增加了许多功能,使得使用T4文件变得更加容易。
将.cs文件的自定义工具属性更改为T4ScriptFileGenerator
。这将在.cs文件下创建一个新的.tt文件。 (有关更多信息,请查看T4工具箱的作者this blog post from Oleg Sych)。现在,只要您保存原始的.cs文件,T4 Toolbox就会运行匹配的.tt文件。
在这个新文件中,您可以添加读取枚举的代码。但是,您似乎在生成的程序集上使用反射,这需要在每次进行更改时重建项目。请改用Visual Studio EnvDTE
来阅读enum
。您可以在IDE中访问已解析的C#文件的抽象语法树,而无需对其进行编译。