1

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

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

我也考虑过使用宏,但宏在 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 回答 1

2

您可能应该使用 DTE 基础结构调用 IDE 命令 TransformAllTemplates 来运行命令,而不是自己进行遍历,如果您只是要运行它们。

于 2013-01-21T19:58:17.497 回答