T4 と Visual Studio を使用して部分クラスを拡張する方法

StackOverflow https://stackoverflow.com/questions/376428

  •  22-08-2019
  •  | 
  •  

質問

T4 を使用して部分クラスのプロパティを生成したいと考えていました。.TT ファイルが拡張したいクラス ファイルと同じプロジェクト内にあるという構成の問題が発生しています。したがって、アセンブリを .TT ファイルに含める必要がある場合、ロックされてしまいます。プリビルドでコマンドラインを実行しようとしましたが、問題は、VS が常にプロジェクトで .TT ファイルを再コンパイルしようとすることです。

私が考える唯一の解決策は、.tt ファイルの名前を .t4 に変更し、TextTransform -out を指定したビルド前コマンドを使用して、プロジェクト ディレクトリに .cs ファイルを作成することです。

これを行うよりクリーンな方法を誰かが考えられますか?

役に立ちましたか?

解決

拡張する必要がある部分クラスのメタデータを読み取るためにリフレクションを使用するテンプレートによってロックが発生すると仮定すると、CodeModel を使用するとロックの問題を解決できる可能性があります。この API は Visual Studio によって提供されており、部分クラスをコンパイルしたり、コンパイルされた DLL をロードしたりすることなく、ソース ファイルから直接メタデータを取得できます。このアプローチを使用する T4 コード ジェネレーターの例を次に示します。 http://www.olegsych.com/2008/07/t4-template-for-generated-sql-view-from-csharp-enumeration

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top