t4模版快速入門


語法

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

1.指令

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

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

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

  • langeuage:輸出語言,有效值C#、VB,默認為C#
  • debug:是否啟用調試,有效值true、false,默認為false。
  • hostspecific:有效值true、false,默認為false。如果將此特性的值設置為 true,則會將名為 Host 的屬性添加到由文本模板生成的類中。 該屬性是對轉換引擎的宿主的引用,並聲明為Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost。
  • inherits:可以指定模板的程序代碼可以繼承自另一個類,這個類也可以從文本模板生成。目前木有使用過,基本上可以忽略
<#@ output extension=".cs" #>

告訴T4引擎生成文件的后綴名是.cs;

<#@ assembly name="System.Core"#>

告訴T4引擎編譯運行時引用System.Core程序集;

<#@ assembly name="$(SolutionDir)\Project.CodeGenerator\bin\Debug\MySql.Data.Dll"  #>

告訴T4引擎引用一個特定的位置上的程序集;

$(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\

<#@ import namespace="System.Data.SqlClient"#>

告訴T4引擎編譯運行時引用某個名稱空間

<#@ include file="../Code/DBSchema.ttinclude"#>

告訴T4引擎編譯運行時引用某個文件,類似於JS的引用

1.2    文本塊

文本塊, T4引擎會將文本塊的內容直接復制到輸出文件中。

1.3    控制塊

控制塊,主要用於控制文本的輸出。在控制塊可以寫任意的C#代碼。

<# 標准控制塊 #> 可以包含語句。

<#= 表達式控制塊 #> 可以包含表達式。

<#+ 類特征控制塊 #> 可以包含方法、字段和屬性,就像一個類的內部

1.4    示例Hello world

#@ template debug="true" hostspecific="true" language="C#" #>
<#@ output extension=".txt" #> Hello, <#Write("World");#>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM