2011-08-10 32 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" #> 
関連する問題