它比所有的要簡單得多。只是追加.TT到所需的文件名稱及用途:
<#@ output extension=""#>
client_stubs.h.tt
<#@ output extension="" encoding="utf-8"#>
<#@ include file="Common.t4" #>
class client_stubs
{
<#
foreach (string member in class_members.Keys)
{
#>
int <#=member#>;
<#
}
#>
}
client_stubs.cpp.tt
<#@ output extension="" encoding="utf-8"#>
<#@ include file="Common.t4" #>
#include "client_stubs.h"
<#
foreach (string member in class_members.Keys)
{
#>
int client_stubs::<#=member#> = <#=class_members[member]#>;
<#
}
#>
Common.t4
<#@ template language="C#" #>
<#@ import namespace="System.Collections.Generic" #>
Dictionary<string, string> class_members = new Dictionary() {
{"m_first", "1"},
{"m_second", "2"}
};
感謝您的回答。我已經意識到來自ONE模板的多個文件的限制。由於我在做兩種不同的語言,因此我們的想法是將兩個獨立的模板文件分開,因爲它們的一些內容將隨語言細節而改變。我的問題在於我需要兩個輸出的文件與其單個文件擴展名不同。對此有何想法? – UtopiaLtd
您不需要有形的T4編輯器來生成輸出代碼。 TemplateFileManager也不需要有形的T4編輯器。您也可以將.ttinclude文件的內容複製到您的T4模板中。這樣你就不會得到更多的文件。然後你的例如VB.tt可以生成output.vb文件,而CSharp.tt生成output.cs文件。 – Nico
真棒,謝謝! – UtopiaLtd