2011-08-10 63 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" #>