程式碼產生和文字範本的新功能
Visual Studio 文字範本可以在執行階段為您的應用程式產生程式碼和資源以及任何種類的文字檔或文件。
Service Pack 1 (SP1) 的新功能
只要安裝 Visual Studio 2010 SP1,即可取得下列功能:
偵錯組件
如果文字範本載入您要偵測的組件,您可以很容易重建該組件。在 Visual Studio SP1 之前的版本中,有時要重建最近被範本載入的組件是件困難的事,因為範本會鎖住組件。 從 SP1 開始,範本會載入組件的複本,因此原始組件並不會被鎖住。 如果重建組件,則在範本下一次執行時會重新載入組件的新複本。 如需詳細資訊,請參閱T4 組件指示詞。
文字範本之間的繼承
您可以定義一個包含文字區塊架構的文字範本,讓它通用於數個變體。 變體範本可以繼承自通用範本。 如需範例和詳細資訊,請參閱T4 範本指示詞和使用前置處理過的 T4 文字範本在執行階段產生文字。
Visual Studio 2010 中的新增和加強的功能
功能 |
主題 |
---|---|
前置處理過的文字範本:提供便利的方法,在任何應用程式的執行階段產生文字檔。 |
|
組建整合:確保產生的程式檔 (Program File) 與原始程式檔 (Source File) 或模型同步保持在最新狀態。 當您安裝 Domain-Specific Language Tools 時,就可以使用這項功能。 |
|
MsBuild 的文字轉換工作:可讓您在使用 Visual Studio 命令列建置專案時,轉換專案中的特定檔案。 如果有會呼叫 TextTransform.exe 的指令碼,可能會發覺這個方法更有彈性。 |
|
Visual Studio Modelbus 支援:提供從文字範本存取多個模型的標準方法。 |
Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusEnabledTextTransformation |
與 DSL 和模型的分隔:即使原先就已經同時加入這兩項功能,您也不需要定義域專屬語言 (Domain Specific Language) 來使用文字範本。 文字範本和檔案產生功能是 Visual Studio 的內建組件。 |
|
服務提供者存取:可在 ModelingTextTransform 的屬性中使用。 |
|
存取環境:在文字範本指示詞中,您可以使用 $(ProjectDir) 這類 Visual Studio 巨集或 %ProgramFiles% 這類 Windows 環境變數。 |
自訂方面的變更
下列功能中做了一些改進,如果您已自訂文字範本化程序,則可能受到影響。
功能 |
主題 |
---|---|
命名空間和組件變更:已將部分型別移至 Microsoft.VisualStudio.TextTemplating.Interfaces 組件。 |
|
工作階段字典:傳入至文字範本會於其中執行之應用程式定義域的序列化字典。 這個字典會提供標準的方式,讓文字範本化主機將資料傳入文字範本程式碼中。 |
自 Visual Studio 2008 以後的其他變更
文字範本中參考的組件
目前專案的參考不再用於尋找組件。
在組件指示詞中,請明確陳述必要組件的位置。
您可以使用 $(ProjectDir) 這類 Visual Studio 巨集或 %ProgramFiles% 這類 Windows 環境變數,做為組件位置的一部分。
文字轉換組件
您可能需要參考以使用文件範本的組件全部都有 "10.0" 尾碼:
Microsoft.VisualStudio.TextTemplating.10.0.dll
Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll
Microsoft.VisualStudio.TextTemplating.Vshost.10.0.dll
Microsoft.VisualStudio.TextTemplating.Modeling.10.0.dll
命名空間
沒有 "Microsoft.VisualStudio.TextTemplating.Interfaces" 命名空間。 這是自 Visual Studio 2010 Beta2 版本後的變更。
啟動偵錯工具
若要從文字範本啟動偵錯工具,請在您要開始逐步執行的位置插入下列呼叫:
System.Diagnostics.Debugger.Launch();
如果在後續的中斷點返回偵錯工具,請呼叫:
System.Diagnostics.Debugger.Break();
預設語言版本
編譯器的最新版本 (4) 將被用來編譯文字範本。 在 Visual Studio 2008 中,預設編譯器為 2.0,但您可以指定較新的範本程式語言版本,例如 <#@ template language="VBv3.5" #>。 Visual Studio 2010 中將忽略版本號碼並回報警告。 如果您想要將您的範本用於兩種 Visual Studio 版本,您可以忽略該警告。