一、回顾
上一篇文章 ——T4模板之菜菜鸟篇,我们囫囵吞枣的创建了与“T4模板”有关的文件。在创建各个文件的这一个过程中,我们对于T4模板有了那么丁点的认识。现在就带着之前的那些问题,正式的迈入对“T4模板”的学习。
二、概念
2.1、类型
T4 文本模板有两种类型:
- 设计时 T4 文本模板
- 运行时 T4 文本模板
三、简要教程
我们只讲“设计时T4文本模板”,其他的都TMD属于高级部分了,哥不懂给不给?
打开之前我们创建的“TextTemplate_.tt”文件:
很明显的有一个特征,那么就是他们都是这种模式:
<#@ 指令 属性=“值”#>
就这样定了,我们按行来学习
3.1、指令:
3.1.1、模板指令
<#@ template debug="false" hostspecific="false" language="C#"#>
说的是这个模板,不可以调试,不提供host这个属性,用的是C#语言。它的完整模式如下,中括号表示可选,没有写它将按照默认处理。
<#@ template [language="VB"] [compilerOptions="options"] [culture="code"] [debug="true"] [hostspecific="true"] [inherits="templateBaseClass"] [visibility="internal"] [linePragmas="false"] #>
3.1.2、程序集指令
<#@ assembly name="System.Core"#> 它的作用类似于在 Visual Studio 项目中添加程序集引用。
3.1.3、导入指令
<#@ import namespace="System.Linq"#> 它等效于 C# 中的 “using System.Linq;”。
3.1.4、输出指令
<#@ output extension=".txt" #> 它就是告诉你,T4模板最终将生产.txt对应后缀的文件。
3.2、控制块
不难发现,如上截图,我们生成的“TextTemplate_.txt”它里面确实是什么内容都没有的。因此,更进一步的学习是“控制块”,对于不同控制块的组合,便能生成我们所需要的文件。
-
<# 标准控制块 #> 可以包含语句。
-
<#= 表达式控制块 #> 可以包含表达式。
-
<#+ 类特征控制块 #> 可以包含方法、字段和属性,就像一个类的内部
3.3、心动不如行动
唱首歌吧!“我是一只小小小鸟……”:
我是zeje,我们来定义一个变量 string name =“zeje”,再看看效果:
哥已经压抑了很久了,一起来呐喊吧:
发泄够了吧?仔细想想,这个类<#+ 类特征控制块 #> 还没用上。好吧,zeje就在这里自我介绍下吧:
既然都自我介绍过了,是不是可以开溜了呢?还是给大家都个红包吧!(这里可能需要另外说明,先凑合着看吧!)
生成结果如下:
上面涉及到额外的知识点:使用T4模板输出多文件,请自行学习。
四、高级篇
其实对于“T4模板”的学习,讲得最详细的还是MSDN,下面给出对应的链接,可以点开深入的了解。
- T4 文本模板编写准则
- 使用 T4 文本模板生成设计时代码
- 演练:使用文本模板生成代码
- 生成过程中的代码生成
- 文本模板的安全性
- 使用 TextTransform 实用工具生成文件
- 使用 T4 文本模板的运行时文本生成
- 编写 T4 文本模板
- T4 文本模板指令
- T4 模板指令
- T4 参数指令
- T4 输出指令
- T4 程序集指令
- T4 导入指令
- T4 包含指令
- T4 CleanUpBehavior 指令
- 文本模板控制块
- 文本模板实用工具方法
- 从文本模板访问 Visual Studio 或其他主机
- 在文本模板中使用转义序列
- 如何:使用转义序列从模板生成模板
- 调试 T4 文本模板
- T4 文本模板编写准则
- 如何:使用文本模板 ...
- 自定义 T4 文本转换
- 文本模板转换过程
- 创建自定义 T4 文本模板指令处理器
- 部署自定义指令处理器
- 演练:创建自定义指令处理器
- 在 VS 扩展中调用文本转换
- 使用自定义宿主处理文本模板
- 演练:创建自定义文本模板宿主
- T4 文本模板的 API 参考
- 命名空间
- Microsoft.VisualStudio.TextTemplating
- Microsoft.VisualStudio.TextTemplating.Modeling
- Microsoft.VisualStudio.TextTemplating.VSHost
转载自:https://www.cnblogs.com/zeje/p/5248340.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现