它比所有的要简单得多。只是追加.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