1

プラグインを介してプロジェクトで 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!
            }
        }

何らかの方法で、上記のコードに次のルーチンを組み込む必要があります。

  1. プロジェクト内のすべての T4 ファイルを見つける
  2. T4 ファイルからアクセスできるように DTE オブジェクトを渡しながら、TT ファイルで T4 を実行します。
  3. $(ProjectDir) などの環境変数も宣言して、T4 スクリプトで読み取れるようにします <-- これが DTE に付属しているのか、別のプロセスなのかはわかりません。

助けてください!

4

1 に答える 1

2

とにかくすべてを実行する場合は、独自のトラバーサルを実行するのではなく、DTEインフラストラクチャを使用してIDEコマンドTransformAllTemplatesを呼び出してコマンドを実行する必要があります。

于 2013-01-21T19:58:17.497 に答える