共用方式為


文字範本轉換流程

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

有三個元件參與這個流程:引擎、主應用程式和指示詞處理器。引擎會控制流程,並與主應用程式及指示詞處理器互動來產生輸出檔。主應用程式提供與環境進行的各種互動,例如找出檔案和組件。指示詞處理器會加入功能,例如從 XML 檔或資料庫讀取資料。

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

元件

元件

描述

可自訂 (是/否)

引擎

引擎元件會控制文字範本轉換流程

否。

主應用程式

主應用程式是引擎和使用者環境之間的介面。Visual Studio 是文字轉換流程的主應用程式。

是。您可以撰寫自訂主應用程式。

指示詞處理器

指示詞處理器是在文字範本中處理指示詞的類別。您可以使用指示詞將輸入來源的資料提供給文字範本。

是。您可以撰寫自訂指示詞處理器。

引擎

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

主應用程式

主應用程式會負責處理任何與轉換流程外部環境相關的工作,包括如下:

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

  • 提供引擎建立產生的轉換類別時所要使用之標準組件及命名空間的清單。

  • 提供當引擎編譯和執行產生的轉換類別時所使用的應用程式定義域。使用個別應用程式定義域的目的,是在保護主應用程式不受範本程式碼中的錯誤影響。

  • 寫入產生的輸出檔。

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

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

  • 提供必要的參數值 (如果使用者未指定值即呼叫指示詞的話)。指示詞處理器可以指定指示詞和參數的名稱,並要求主應用程式提供預設值 (如果有的話)。

指示詞和指示詞處理器

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

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

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

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

標準指示詞處理器會在產生的轉換類別中將這個指示詞轉換為 using 陳述式。接著,您便可以在剩下的範本程式碼中使用 StringBuilder 類別,而不需指定其完整名稱為 System.Text.StringBuilder。