8

T4 を使用して、実行中のテンプレート ファイルに関連するディレクトリにあるファイルを調べて、コードを生成したいと考えています。

c# で現在のテンプレート ファイルのパスを特定する方法はありますか?

4

1 に答える 1

20
  • ディレクティブのhostspecific="true"プロパティをに設定する必要があります。<#@ templateTrue
  • これにより、T4 は と呼ばれる特別なプロパティを生成し、メソッドとプロパティHostにアクセスできるようになります。 ResolvePathTemplateFile
    • HostタイプITextTemplatingEngineHostです。
    • TemplateFileString通常、ファイルのファイル システム パスである値です.ttが、T4 ファイルをメモリ内にロードする可能性のある他の T4 ホスト (つまり、Visual Studio 以外のホスト) は、テンプレート ファイルがそうでないため、他の値を返す可能性があります。ディスク上に存在します。
  • 詳細はこちら: http://www.olegsych.com/2008/02/t4-template-directive/

例えば:

<#@ template hostspecific="true" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="Microsoft.VisualStudio.TextTemplating" #>
<#
    ITextTemplatingEngineHost t4Host = this.Host;
    FileInfo t4FileInfo = new FileInfo( t4Host.TemplateFile );
#>

// This file generated by <#= t4FileInfo.FullName #>

于 2008-12-29T15:15:57.250 に答える