プラグインを介してプロジェクトで T4 ファイルを実行するにはどうすればよいですか? ヒント/手がかりはありますか?EnvDte のドキュメントは特に不足しています。
ビルド イベントで T4 テンプレートを実行する必要があるため、このソリューションにたどり着きました。何かが変わるたびに手動でカスタム ツールを実行したくありません。T4 スクリプトには DTE オブジェクトへの参照が含まれているため、コマンド ラインからは実行できません。また、コマンド ラインから実行すると、barfs アウトするだけです。
マクロの使用も検討しましたが、VS2012 ではマクロを使用できません。また、ローカル マシンにバグがあり、マクロ IDE を起動できません。したがって、これは短期的/長期的な良い解決策ではありません。
最善の解決策は、ビルド時に T4 ファイルを実行する独自のプラグインを作成することです。これは私が得た限りです:
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
_applicationObject.Events.BuildEvents.OnBuildBegin += customBuildHander;
}
void customBuildHander(vsBuildScope Scope, vsBuildAction Action)
{
if (Scope == vsBuildScope.vsBuildScopeProject)
{
//Need to run steps 1 thru 3 here!
}
}
何らかの方法で、上記のコードに次のルーチンを組み込む必要があります。
- プロジェクト内のすべての T4 ファイルを見つける
- T4 ファイルからアクセスできるように DTE オブジェクトを渡しながら、TT ファイルで T4 を実行します。
- $(ProjectDir) などの環境変数も宣言して、T4 スクリプトで読み取れるようにします <-- これが DTE に付属しているのか、別のプロセスなのかはわかりません。
助けてください!