主要包括指令、文本块、控制块。web
指令主要包括template, output, assembly, import, include等类型,用以告诉T4引擎如何编译和运行一个模板。这些指令至关于T4引擎的配置参数。
示例:c#
<#@ template debug="true" hostspecific="true" language="C#" #>
告诉T4引擎控制块用c#编写;spa
<#@ output extension=".cs" #>
告诉T4引擎生成文件的后缀名是.cs;debug
<#@ assembly name="System.Core"#>
告诉T4引擎编译运行时引用System.Core程序集;调试
<#@ assembly name="$(SolutionDir)\Project.CodeGenerator\bin\Debug\MySql.Data.Dll" #>
告诉T4引擎引用一个特定的位置上的程序集;code
$(SolutionDir):当前项目所在解决方案目录
$(ProjectDir):当前项目所在目录
$(TargetPath):当前项目编译输出文件绝对路径
$(TargetDir):当前项目编译输出目录,即web项目的Bin目录,控制台、类库项目bin目录下的debug或release目录(取决于当前的编译模式)继承
举个例子:好比咱们在D盘根目录创建了一个控制台项目MyTest,解决方案目录为D:\Feng,项目目录为
D:\Feng\MyTest,那么此时在Debug编译模式下
$(SolutionDir)的值为D:\Feng
$(ProjectDir)的值为D:\Feng\MyTest
$(TargetPath)值为D:\Feng\MyTest\bin\Debug\MyTest.exe
$(TargetDir)值为D:\Feng\MyTest\bin\Debug ci
<#@ import namespace="System.Data.SqlClient"#>
告诉T4引擎编译运行时引用某个名称空间get
<#@ include file="../Code/DBSchema.ttinclude"#>
告诉T4引擎编译运行时引用某个文件,相似于JS的引用it
1.2 文本块
文本块, T4引擎会将文本块的内容直接复制到输出文件中。
1.3 控制块
控制块,主要用于控制文本的输出。在控制块能够写任意的C#代码。
<# 标准控制块 #> 能够包含语句。 <#= 表达式控制块 #> 能够包含表达式。 <#+ 类特征控制块 #> 能够包含方法、字段和属性,就像一个类的内部
1.4 示例Hello world
#@ template debug="true" hostspecific="true" language="C#" #> <#@ output extension=".txt" #> Hello, <#Write("World");#>