0

VS 2012 でプラグインを作成しました。このプラグイン ソリューションには、T4 テンプレートも含まれています。t4 テンプレートがプラグイン ソリューションにも存在する場合、プラグインのクリックで t4 テンプレートを実行するロジックを実装しました。

問題は、T4 テンプレートをプラグインに埋め込む方法です。これにより、これらのテンプレート ファイルを含まない他のソリューションでこのプラグインを使用すると、プラグイン テンプレートのクリック時にも実行され、出力ファイルが生成されます。私が使用しているコードスニペットを添付しています。

    var dte = Marshal.GetActiveObject("VisualStudio.DTE.11.0") as EnvDTE80.DTE2;
    Solution sol = ((DTE)dte).Solution;
    string strFileName = string.Empty;
    foreach (Project project in sol.Projects)
    {
      foreach (ProjectItem item in project.ProjectItems)
      {                              
         if (item.Name.Contains(".tt"))
         {
            VSLangProj.VSProjectItem itemobj =(VSLangProj.VSProjectItem)item.Object;
            itemobj.RunCustomTool();                    
         }             
      }
    }

投稿者:シヴァニ・スリバスタヴァ

4

1 に答える 1

1

T4 サービスを使用することをお勧めします。DTE から IServiceProvider を取得してから、STextTemplating をクエリできます。その使用方法に関するドキュメントはこちらです。

于 2013-07-11T19:18:54.987 に答える