0

クライアント マシン (VS の外部) で T4 ファイルを処理するアプリを作成しています。理想的には、.tt ファイルを dll に埋め込みたいと思います。

Build Action を Resource に設定しようとしましたが、前処理された .cs ファイルにまだ .tt ファイルへのハードコーディングされたディレクトリ参照が含まれていることに気付きました。

.tt ファイルを配布して実行時に参照する適切な方法は何ですか?

明確にするために、ファイルをdllに埋め込んでリソースとしてアクセスするか、実行時にアセンブリパスに相対的な場所からファイルをロードできるようにしたいと考えています。

4

1 に答える 1

2

.tt ファイル自体を配布する必要はありません。.tt ファイルを使用すると、次の 2 つの手順が実行されます。

  1. テンプレート エンジンは、テンプレートをコンパイル可能で実行可能なコード クラスに変換します。
  2. このコード クラスが実行され、出力コードが生成されます

エンジンは Visual Studio の再配布可能な部分ではないため、t4 テンプレートを配布する場合は、前処理済みのテンプレートを使用する必要があります。このようにして、手順 1 で生成されたコード クラスが t4 テンプレートの .cs ファイルにレンダリングされ、コンパイルされ、アセンブリと共に出荷されます。

t4 テンプレートを使用して C# コードを記述すると、混乱する可能性があります。これは、ステップ 1 のコード クラスも C# クラス (もちろん ac# プロジェクト内) であり、実際にビルドされた .Write() メソッド呼び出しが多数含まれているためです。目的の出力コードをアップします。

前処理されたテンプレートには、#line で始まる行が含まれ、その後に T4 テンプレート ファイルへのローカルおよび絶対パスが続きます。これらの行はデバッグ用であり、ステップ 1 でテンプレート エンジンによってエラーが検出されたときに、Visual Studio が .tt ファイル内の適切な行を表示できるようにします。

于 2013-03-11T08:13:38.840 に答える