2013-02-01 101 views
4

我有關於T4模板的以下問題。 含考慮SomeTemplate.tt:如何處理T4字符串模板?

<#@ template language="C#" #> 
Today is <#= DateTime.Today.ToString() #> 

據處理這樣的:

SomeTemplatest st = new SomeTemplate(); 
string processedText = st.TransformText(); 

問:什麼是模板是不是現有的TT和在數據庫中的某個地方。 該模板如何作爲字符串被處理?

+0

您打算在VisualStudio內運行轉換或作爲獨立的解決方案嗎? – Nico

回答

2

儘管我對你的問題發表了評論,但在這兩種情況下,你都需要創建一個Microsoft.VisualStudio.TextTemplating.Engine類的實例。該類有一個方法ProcessTemplate(...),您可以將模板代碼作爲字符串傳遞。

第二個參數可能會更棘手,這是一個模板主機提供上下文信息和功能來轉換模板。我不確定是否有辦法獲取Visual Studio的TextTemplatingEngineHost。

但是對於構建後的獨立版本(例如,您想要在應用程序中轉換模板),您必須創建自定義文本模板主機。一個演練如何做到這一點可以在這裏找到:http://msdn.microsoft.com/en-us/library/bb126579.aspx

+1

請記住,引擎不是可再發行組件,因此只能在具有Visual Studio許可安裝的計算機上或基於Visual Studio Isolated Shell的工具中執行此操作。或者,使用單聲道版本的T4。 – GarethJ