web-dev-qa-db-ja.com

T4でプロジェクトまたは相対ディレクトリを取得する

Visual Studioプロジェクトまたはソリューションのディレクトリ、またはt4テンプレート内からt4テンプレートのディレクトリへの参照を取得するにはどうすればよいですか?

テンプレートに関連して配置された多数のファイルを連結するテンプレートがあります。相対的な手段で絶対的な場所への参照を取得する必要があります。 Visual Studioプロジェクトが常に同じ場所にあるとは限らず、コード生成が中断されるため、絶対パスをハードコーディングすることはできません。環境から現在の作業ディレクトリを読み取ることも機能しません。これは、テンプレートではなくT4エンジンが存在する場所を返すためです。私はちょうどt4に入っているので、どんな助けもいただければ幸いです。

47
Blake Taylor

ホスト固有のパラメータセクション [〜#〜] here [〜#〜] を参照してください。

このスニペットは、テンプレートに関連するsrcのフルパスを取得する方法を示しています。

<#@ template hostspecific="true" #>
// The location of the src folder relative to the t4 template:
// <#= Host.ResolvePath("src") #>
88
Blake Taylor

あなたもこのような道をつかむことができます

<#@ template hostspecific="true" #>
<#= Path.GetDirectoryName(this.Host.TemplateFile) #>
2
johnny 5