文字範本轉換流程

文字範本轉換流程會採用文字範本檔案做為輸入,並產生文字檔做為輸出。 例如,您可以使用文字範本來產生 Visual Basic 或 C# 程式碼,也可以產生 HTML 報表。

有三個元件會參與此流程: 引擎、主機和指示詞處理器。 引擎會控制流程;它會與主機和指示詞處理器互動,以產生輸出檔案。 主機會提供與環境的任何互動,例如尋找檔案和組件。 指示詞處理器會新增功能,例如從 XML 檔案或資料庫讀取資料。

文字範本轉換流程會以兩個步驟執行。 首先,引擎會建立一個暫存類別,也稱為產生的轉換類別。 這個類別包含指示詞和控制項區塊所產生的程式碼。 之後,引擎會編譯並執行產生的轉換類別,以產生輸出檔。

元件

組件 描述 可自訂 (是/否)
引擎 引擎元件會控制文字範本轉換流程 否。
Host 主機是引擎與使用者環境之間的介面。 Visual Studio 是文字轉換流程的主機。 是。 您可以寫入自訂主機。
指示詞處理器 指示詞處理器是處理文字範本中指示詞的類別。 您可以使用指示詞將資料提供給來自輸入來源的文字範本。 是。 您可以寫入自訂的指示詞處理器

引擎

引擎會從主機接收範本做為字串,以處理轉換流程中所使用的所有檔案。 然後引擎會要求主機找出任何自訂的指示詞處理器和環境的其他層面。 然後引擎會編譯並執行產生的轉換類別。 引擎會將產生的文字傳回主機,這通常會將文字儲存至檔案。

主機

主機會負責任何與轉換流程之外的環境有關的事情,包括下列各項:

  • 尋找引擎或指示詞處理器所要求的文字和二進位檔案。 主機可搜尋目錄和全域組件快取來找出組件。 主機可以找出引擎的自訂指示詞處理器程式碼。 主機也可以找出並讀取文字檔,並以字串的形式傳回其內容。

  • 提供引擎用來建立所產生的轉換類別的標準組件和命名空間清單。

  • 提供引擎編譯和執行產生的轉換類別時所使用的應用程式網域。 使用不同的應用程式網域來保護主機應用程式,使其免於範本程式碼中的錯誤。

  • 寫入產生的輸出檔案。

  • 設定所產生的輸出檔案的預設副檔名。

  • 處理文字範本轉換錯誤。 例如,主機可以在使用者介面中顯示錯誤,或將它們寫入檔案。 (會在 Visual Studio 的 [錯誤訊息] 視窗中顯示錯誤。)

  • 如果使用者未提供值就呼叫指示詞,則提供必要的參數值。 指示詞處理器可以指定指示詞的名稱和參數,並要求主機在有預設值時提供預設值。

指示詞和指示詞處理器

指示詞是文字範本中的命令。 它會提供產生流程的參數。 一般而言,指示詞會定義模型的來源和類型或其他輸入,以及輸出檔的副檔名。

指示詞處理器可以處理一或多個指示詞。 當您轉換範本時,必須已安裝可處理範本中指示詞的指示詞處理器。

在產生的轉換類別中新增程式碼,即可讓指示詞運作。 您可以從文字範本呼叫指示詞,而引擎會在建立產生的轉換類別時處理所有的指示詞呼叫。 成功呼叫指示詞之後,您在文字範本中所寫入的其餘程式碼就可以依賴指示詞提供的功能來運作。 例如,您可以對範本中的 import 指示詞進行下列呼叫:

<#@ import namespace="System.Text" #>

標準指示詞處理器會將這個轉換成產生的轉換類別中的 using 語句。 然後,您可以在範本程式碼的其餘部分使用 StringBuilder 類別,而不將它限定為 System.Text.StringBuilder