在Build上运行T4的VIsual Studio插件

时间:2013-01-21 18:50:03

标签: c# visual-studio-2010 visual-studio t4 envdte

如何通过插件在项目中运行T4文件?任何提示/线索?我发现EnvDte文档特别稀缺。

我得到了这个解决方案,因为我需要在构建事件上运行我的T4模板。每次发生变化时我都不想手动运行自定义工具。我不能从命令行运行它,因为T4脚本引用了DTE对象,当从cmd行运行时它只是barfs out。

我还考虑过使用Macros,但是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. 在TT文件上运行T4,同时传递DTE对象,以便可以从T4文件访问它们
  3. 同时声明环境变量,例如$(ProjectDir),以便在T4脚本中读取它们< - 我不知道这是否与DTE一起提供,或者是一个单独的过程。
  4. 请帮忙!

1 个答案:

答案 0 :(得分:2)

你可能应该使用DTE基础设施来调用IDE命令TransformAllTemplates来运行一个命令而不是自己遍历如果你打算全部运行它们。