程式碼產生和 T4 文字範本

在 Visual Studio 中,T4 文字範本混合文字區塊及可產生文字檔案的控制邏輯。 控制項邏輯是使用 Visual C# 或 Visual Basic,以程式碼片段的形式所撰寫。 您可以在 T4 範本指令中使用 C# 6.0 版功能。 產生的檔案可以是文字,例如網頁、資源檔或任何語言的原始程式碼。

針對旨在特定問題空間中表達語句的特定領域語言 (DSL),了解如何從特定領域語言產生程式碼

T4 文字範本有兩種類型:執行階段設計階段

執行階段 T4 文字範本

執行階段範本也稱為「前置處理」範本。 您可以在應用程式中執行範本,以產生文字字串作為其輸出的一部分。 例如,您可以建立用來定義 HTML 網頁的範本:

<html><body>
 The date and time now is: <#= DateTime.Now #>
</body></html>

請注意,範本與產生的輸出類似。 範本與產生的輸出之間的相似性,可協助您避免在要變更範本時發生錯誤。

此外,範本也包含程式碼片段。 您可以使用這些片段來重複文字區段、建立條件式區段,以及顯示應用程式的資料。

為產生輸出,應用程式會呼叫範本所產生的函式。 例如:

string webResponseText = new MyTemplate().TransformText();

應用程式可以在未安裝 Visual Studio 的電腦上執行。

若要建立執行階段範本,請將 [前置處理過的文字範本] 檔案加入專案中。 您也可以新增純文字檔,並將其 [自訂工具] 屬性設定為 [TextTemplatingFilePreprocessor]

如需詳細資訊,請參閱使用 T4 文字模板產生執行階段文字。 如需範本語法的詳細資訊,請參閱撰寫 T4 文字範本

設計階段 T4 文字範本

設計階段範本會定義一部分的應用程式原始程式碼和其他資源。 您通常會使用幾個範本讀取單一輸入檔或資料庫中的資料,然後產生部分 .cs.vb 或其他來源檔案。 每個範本都會產生一個檔案,並建置在 Visual Studio 或 MSBuild 內。

例如,輸入資料可以是組態資料的 XML 檔案。 每當您在開發期間編輯 XML 檔案時,文字範本就會重新產生應用程式程式碼的一部分。 其中一個範本可能與下列範例類似:

<#@ output extension=".cs" #>
<#@ assembly name="System.Xml" #>
<#
 System.Xml.XmlDocument configurationData = ...; // Read a data file here.
#>
namespace Fabrikam.<#= configurationData.SelectSingleNode("jobName").Value #>
{
  ... // More code here.
}

產生的 .cs 檔案會根據 XML 檔案值,採用下列格式:

namespace Fabrikam.FirstJob
{
  ... // More code here.
}

另一個範例是,輸入可以是商務活動中的工作流程圖。 當使用者變更其商務工作流程,或您與工作流程不同的新使用者開始合作時,就可以輕鬆地重新產生符合新模型的程式碼。

注意

「模型」 (model) 一詞有時可用來描述由一個或多個範本讀取的資料。 模型可以是任何形式、任何類型的檔案或資料庫。 它不需要是 UML 模型或「特定領域語言」模型。 「模型」只表示資料可以依照商務概念定義,而非類似於程式碼。 隨著需求變更而變更設定時,設計階段範本是更快、更可靠的選擇。 如工作流程範例所示,輸入通常是依照商務需求定義的。 設計階段範本是敏捷式開發流程中的實用工具。

若要建立設計階段範本,請將 [文字範本] 檔案加入專案中。 此外,您也可以加入純文字檔,並將其 [自訂工具] 屬性設定為 [TextTemplatingFileGenerator]

如需詳細資訊,請參閱使用 T4 文字範本產生設計階段程式碼。 如需範本語法的詳細資訊,請參閱撰寫 T4 文字範本

文字範本轉換功能的名稱為 T4

另請參閱