最近工作中用到了T4模板,正好趁这个机会学习了一下,博客园和网上有很多相关的学习资料,给刚接触这块的人带来了很大的便利。但今天,由于自己不正确的使用T4模板,遇到了一个错误:包含类功能的模板必须以类功能结尾。在网上查也没有查到相关的问题和解决办法,看来之前用T4模板的人对于类功能模板的理解比我这个菜鸟强的多,没犯这样低级的错误。但是,既然错误出现了,就把它记录一下吧。
问题的出现是这样的,之前自己编写了一个T4模板文件,后来需要改进一下,发现可以将重复的代码写到一个函数里面,通过函数调用的方式避免代码的重复。在T4模板里面写函数,便引入了类功能控制块的概念,这里再次强调一下类功能控制块的概念:可以使用类功能控制块向文本模板添加方法、属性、字段甚至是嵌套类,必须作为文件中的最后一个块显示,或者用<#@include#>引入外部文件。我犯的错误,就在于对“必须作为文件中的最后一个块”这句话的理解出现偏差,以为是输出文件的最后面就行,结果文本模板的代码结构如下图显示:
然而,正确的理解应该是放到文本模板文件的最后面,如下图所示
按照这种理解再去添加类功能模块,本文题目中提到的问题便不会出现了。