2011-08-10 64 views
4

如何在模板中使用生成的文件名? 我想是这样的:T4输出文件名

// This file: <#= OutputFileName #> was autogenerated 

我可怎么办,在T4或T4Toolbox?

回答

6

这似乎喜欢的事,应该是简单的读性能,但反映在主机变量和拆卸文本生成代码后,我觉得这样做的最简单的方法是:

<#@ template language="C#" hostspecific="true" #> 
<#@ import namespace="System.IO"    #> 

// <#=Path.ChangeExtension (Host.TemplateFile, "cs")#> 
+0

这不完全是我的意思。我不想手动指定扩展名。我希望一切都是自动的。事件扩展应该来自模板的变量。当我设置<#@ output extension =“cs”#>它在哪里?有没有访问此字段 – Simon

+1

<#@ output extension =“cs”#>调用Host.SetFileExtension(“cs”)。据我所知,没有公共方法/属性来获得FileExtension。我尝试使用反射来检索它(只是为了尝试),但它看起来像是在另一个AppDomain中运行的主机,这很复杂。 – FuleSnabel

3

它更好地把它定义为一个指令

例如用于XAML文件

<#@ output extension="xaml" #> 

或TXT

<#@ output extension=".txt" #>