t4模版快速入門

語法

主要包括指令、文本塊、控制塊。web

1.指令

指令主要包括template, output, assembly, import, include等類型,用以告訴T4引擎如何編譯和運行一個模板。這些指令至關於T4引擎的配置參數。
示例:c#

<#@ template debug="true" hostspecific="true" language="C#"  #>

告訴T4引擎控制塊用c#編寫;spa

  • langeuage:輸出語言,有效值C#、VB,默認爲C#
  • debug:是否啓用調試,有效值true、false,默認爲false。
  • hostspecific:有效值true、false,默認爲false。若是將此特性的值設置爲 true,則會將名爲 Host 的屬性添加到由文本模板生成的類中。 該屬性是對轉換引擎的宿主的引用,並聲明爲Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost。
  • inherits:能夠指定模板的程序代碼能夠繼承自另外一個類,這個類也能夠從文本模板生成。目前木有使用過,基本上能夠忽略
<#@ 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");#>
相關文章
相關標籤/搜索