Visual Studio 2012 の T4 機能には数多くの改善が加えられている。中でも注目すべきなのはディレクティブプロセッサ展開時の MEF のサポート,デバッグの容易化の2つだ。
ディレクティブプロセッサは,T4 テンプレートにコードの挿入や,あるいは外部データの設定を行うために使用する。ディレクティブプロセッサの開発と展開は,従来はかなり退屈な作業だった。それが VS 2012 と MEF によってより簡単になり,IDirectiveProcessor インターフェースを実装すればよくなる。詳細はまだ明らかになっていないが,DirectiveProcessor と SupportedDirective という2つの属性が,力仕事の部分を肩代わりしてくれるようだ。
プリプロセス・テンプレート (Preprocessed Templates) は "デザインタイム・テンプレート (Design-time Template)" という名称に変更された。プリプロセス・テンプレートを知らない人のために説明すると,通常の .NET アセンブリにコンパイルされる T4 テンプレートのことである。コンパイルによって Visual Studio への依存性がなくなるため,他のアプリケーションからもコールが可能になる。
Visual Studio 2012 では,プリプロセステンプレートから生成したクラスに対して,ディレクティブプロセッサを通じて独自の属性を追加することができる。MEF のエクスポートのテンプレートへの追加を用途として想定したものだ。
@template ディレクティブを使用して,テンプレートクラスの可視性を変更することも可能である。
Visual Studio と COM の不都合な相互作用に対処するには,通常の GetService 関数に代えて,新たに用意された ServiceProviderExtensions.GetComService 関数を使用しなければならない。これが必要になるのは,"ホスト固有のテンプレートを使って VS サービスにアクセス" する場合のみである。
最後に紹介する追加機能は テンプレートデバッグの簡略化 である。従来 デバッグディレクティブと Debugger コール の追加が必要だったものが簡略化されて,ファイルを右クリックして T4 テンプレートにブレークポイントを設定すれば,直ちにデバッグが開始できるようになる。