C# T4模板:当模板使用的某个类被修改时,有什么方法可以使模板运行?

C# T4模板:当模板使用的某个类被修改时,有什么方法可以使模板运行?,c#,t4,C#,T4,我制作了一个简单的设计时模板,它使用驻留在同一项目中的枚举。该模板为该枚举类型中的每个变量生成一个类定义 我注意到,无论如何,更改并保存.tt文件都会使它再次生成c#代码。我希望我可以设置解决方案,这样,如果我更改枚举然后保存,那么模板也可能再次启动源代码。。这样,当我想添加一个新类型时,我可以向枚举定义中添加一个变量,也许只需按save 目前,我必须这样做: 将变量添加到枚举定义的.cs文件中 重新编译项目 在template.tt文件上运行“runcustomtool” 然后需要再次编译才能

我制作了一个简单的设计时模板,它使用驻留在同一项目中的枚举。该模板为该枚举类型中的每个变量生成一个类定义

我注意到,无论如何,更改并保存.tt文件都会使它再次生成c#代码。我希望我可以设置解决方案,这样,如果我更改枚举然后保存,那么模板也可能再次启动源代码。。这样,当我想添加一个新类型时,我可以向枚举定义中添加一个变量,也许只需按save

目前,我必须这样做:

  • 将变量添加到枚举定义的.cs文件中
  • 重新编译项目
  • 在template.tt文件上运行“runcustomtool”
  • 然后需要再次编译才能在t4生成的源代码中编译
  • 因此,也许有一种方法可以让模板“检测”它使用的另一个源中的更改, 并且表现得好像它自己被修改了一样

  • 从安装开始。它添加了许多功能,使使用T4文件更加容易

  • 将.cs文件的自定义工具属性更改为
    T4ScriptFileGenerator
    。这将在.cs文件下创建一个新的.tt文件。(更多信息,请查看T4工具箱的作者)。现在,只要保存原始的.cs文件,T4 Toolbox就会运行匹配的.tt文件

  • 在这个新文件中,可以添加读取枚举的代码。但是,您似乎正在对生成的程序集使用反射,这需要在每次进行更改时重新生成项目。使用Visual Studio来读取
    枚举
    。您可以访问IDE中解析的C#文件的抽象语法树,而无需编译它们


  • 遇到了一个障碍:我使用的是VS express,但它并没有与之一起安装。不过,还是要感谢您的回答。因为我总是在编辑枚举后点击save,所以我需要的只是让模板在那个时候运行。