T4输出文件名

5

我该如何在模板中使用生成文件的名称?我想做到这样:

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

我该如何在T4或T4Toolbox中实现这个功能?
2个回答

7

这似乎应该像读取属性一样简单,但在反射主机变量和反汇编文本生成器代码后,我认为最简单的方法是:

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

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

这不完全是我的意思。我不想手动指定扩展名。我希望一切都是自动的。甚至扩展名也应该从模板变量中获取。当我设置<#@ output extension="cs"#>时,它在哪里?是否有访问此字段的权限? - Simon
1
<#@ output extension="cs"#> 调用 Host.SetFileExtension ("cs")。据我所知,没有公共方法/属性可以获取 FileExtension。我尝试使用反射来检索它(只是为了尝试),但由于 Host 似乎在另一个 AppDomain 中运行,这使得事情变得复杂。 - Just another metaprogrammer

2
最好将其定义为指令。
例如,针对一个 XAML 文件。
<#@ output extension="xaml" #>

或者用于文本。
<#@ output extension=".txt" #>

OP在询问如何获取输出文件名,所以你的回答是离题的。 - VillageTech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接