2013-04-05 13 views
7

私はいくつかのT4ファイルを生成するためにいくつかのT4テンプレートを使用していますが、それらのほとんどは同じコードをたくさん共有していますので、自然に関数を作り、 T4ファイルにアクセスすることができます。コード生成のためにT4 .ttテンプレート内の別のファイルからコードを実行できますか?

しかし、実際に別のファイルに保存されているコードを使用する方法やGoogleを見つけることができないようです。

これは可能ですか?もしそうなら、それを行う方法の簡単な例がありますか?

+0

T4をどのように使用しているかに応じて、シナリオをもう少し詳しく教えてください。たとえば、Asp.netビュースキャフォールディングとソリューションの基本的な変換があります。 – GarethJ

+0

@GarethJ t4ファイルはSQLでIDテーブルを検索しており、IDのタルブルと一致する列挙子を持つ.csファイルを生成しています。これまでのご協力ありがとうございます! =) – Kyle

答えて

6

あなたの質問から、ソリューションの通常のテンプレートファイルでT4を使用しているように思えます。 この場合、<#@ include #>ディレクティブを使用して、共有コードを引き出すことができます。これは、C/C++の#includeに似ている生のテキストの包含メカニズムであるため、他のファイルに共有するのに気を配ったり、少しでも動かすことができます。

docs hereを参照してください。

現在のところ、インクルードディレクティブはASP.Netビューのスキャフォールディングテンプレートでは機能しません。

通常のC#プロジェクトとコードを共有する場合は可能ですが、参照できるアセンブリに共有コードを作成する必要があります。 ディレクティブを使用して.csファイルを直接プルすることはできません。ディレクティブがコントロールまたはクラスフィーチャブロック内にネストしないからです。

<#@ assembly #>指示文hereを使用して、共有コードを含むヘルパーアセンブリを参照できます。

+0

私は '<#@ include file =" test.cs "#>'を試みていますが、私がtest.csファイルからクラスを使用しようとすると、見つからないと言います。 – Kyle

+0

ああ、T4の断片ではなく、通常のC#コードを含めたいと思っています。私は私の答えを改めるつもりです。 – GarethJ

関連する問題