私は最近、かなり複雑な T4 クラスの単体テストを行うための遠征に着手しました。私は大きなブレークスルーに到達しましたが、観測された動作は偶然にすぎない可能性があることを恐れています (つまり、Visual Studio の将来のバージョンで壊れる可能性があります)。
私は基本的に次のようなものを持っています:
MainTemplate.tt:
<#@ include file="generator.tt.cs" #>
そして、 generator.tt.cs に私は持っています
//<#+
class code
{
....
}
//#>
これの観察された動作は、宣言されたクラスなどを T4 テンプレートから使用し、コード ファイルを通常どおりコンパイルできることです。ただし、すべての定義された動作でタグ<#+
とタグの前にコメントを付けていますか? #>
将来、この破損のリスクがありますか?
また、MonoDevelop と Visual Studio 2012 の両方でこれをテストしました。両方で動作するようです。ただし、Visual Studio 2008 との互換性は私にとって重要ではありません。