2

私は最近、かなり複雑な T4 クラスの単体テストを行うための遠征に着手しました。私は大きなブレークスルーに到達しましたが、観測された動作は偶然にすぎない可能性があることを恐れています (つまり、Visual Studio の将来のバージョンで壊れる可能性があります)。

私は基本的に次のようなものを持っています:

MainTemplate.tt:

<#@ include file="generator.tt.cs" #>

そして、 generator.tt.cs に私は持っています

//<#+
class code
{
....
}
//#>

これの観察された動作は、宣言されたクラスなどを T4 テンプレートから使用し、コード ファイルを通常どおりコンパイルできることです。ただし、すべての定義された動作でタグ<#+とタグの前にコメントを付けていますか? #>将来、この破損のリスクがありますか?

また、MonoDevelop と Visual Studio 2012 の両方でこれをテストしました。両方で動作するようです。ただし、Visual Studio 2008 との互換性は私にとって重要ではありません。

4

1 に答える 1

3

将来的に物事を「決して」壊さないとは言えませんが、これを壊すために私たちが何をするか想像するのは難しいと思います. 機能ブロック内のコメントは常に尊重され、それより前のコメントは、コメントの生成を可能にするために尊重される必要があります。あなたは安全だと思います。

ステートメントや名前空間を使用する場所がないため、generator.tt.cs ファイルで完全修飾名を使用する必要があると思います。

これは、空のスタブ テンプレートを介してテスト用のヘルパー ライブラリをプリコンパイルし、プリコンパイルされたバージョンをテストする場合と比べてどうですか?

于 2012-11-01T07:04:25.863 に答える