主要包括指令、文本塊、控制塊。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");#>