文字範本轉換程序會以文字範本檔案作為輸入,並產生新的文字檔案作為輸出。 例如,您可以使用文字範本來產生 Visual Basic 或 C# 程式碼,也可以產生 HTML 報表。
三個元件參與此程序:引擎、主機和指令處理器。 發動機控制過程;它會與主機及指令處理器互動,以產生輸出檔案。 主機提供與環境之間的各種互動,例如尋找檔案和程序集。 指引處理器會新增功能,例如從 XML 檔案或資料庫讀取資料。
文字範本轉換程序分兩個步驟執行。 首先,引擎會建立一個臨時類別,稱為產生的轉換類別。 這個類別包含指令和控制區塊所產生的程式碼。 之後,引擎編譯並執行產生的轉換類別以產生輸出檔案。
Components
| 元件 | Description | 可自訂(是/否) |
|---|---|---|
| Engine | 引擎元件控制文字範本轉換程序 | 否。 |
| Host | 主機是引擎與使用者環境之間的介面。 Visual Studio 是文字轉換程式的主機。 | 是的。 您可以撰寫自訂主機。 |
| 指令處理器 | 指令處理器是處理文字範本中指令的類別。 您可以使用指引,從輸入來源將資料提供給文字範本。 | 是的。 您可以撰寫自訂指引處理器 |
引擎
引擎會從主機接收範本作為字串,以處理轉換程式中使用的所有檔案。 然後,引擎會要求主機找出任何自訂指令處理器和環境的其他層面。 然後,引擎會編譯並執行產生的轉換類別。 引擎會將產生的文字傳回給主機,主機通常會將文字儲存至檔案。
主持人
主機負責與轉換程序之外的環境相關的任何項目,包括下列項目:
尋找引擎或指令處理器所要求的文字和二進位檔。 主機可以在目錄和全域組件快取中搜尋,以定位組件。 主機可以找到用於引擎的自訂指令處理器程式碼。 主機也可以尋找和讀取文字檔,並將其內容傳回為字串。
提供引擎用來建立所產生轉換類別的標準元件和命名空間清單。
提供引擎編譯並執行產生的轉換類別時所使用的應用程式網域。 使用單獨的應用程式域來保護主機應用程式免受範本程式碼中的錯誤的影響。
寫入產生的輸出檔案。
設定所產生輸出檔案的預設副檔名。
處理文字範本轉換錯誤。 例如,主機可以在使用者介面中顯示錯誤或將它們寫入檔案。 (在 Visual Studio 中,錯誤會顯示在 [錯誤訊息視窗] 中。
如果使用者呼叫了指令,但未提供值,則提供必要的參數值。 指引處理器可以指定指引的名稱和參數,並要求主機提供預設值 (如果有的話)。
指令和指令處理器
指令是文字範本中的命令。 它為生成過程提供參數。 通常,指示詞會定義模型或其他輸入的來源和類型,以及輸出檔的檔名副檔名。
指引處理器可以處理一或多個指引。 當您轉換範本時,您必須已安裝可以處理範本中指令的指令處理器。
指令的工作原理是在產生的轉換類別中新增程式碼。 您可以從文字範本呼叫指示詞,而引擎會在建立產生的轉換類別時處理所有指示詞呼叫。 成功呼叫指示詞之後,您在文字範本中撰寫的其餘程式碼可以依賴指示詞提供的功能。 例如,您可以在範本中對 import 指令進行如下呼叫:
<#@ import namespace="System.Text" #>
標準指令處理器會將此轉換為在產生的轉換類別中的using語句。 然後,您可以在範本程式碼的其餘部分使用該 StringBuilder 類別,而無需將其限定為 System.Text.StringBuilder。