如何通过插件在项目中运行 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!
}
}
我需要以某种方式在上面的代码中适应以下例程:
- 查找项目中的所有 T4 文件
- 在 TT 文件上运行 T4,同时传递 DTE 对象,以便可以从 T4 文件访问它们
- 还要声明环境变量,例如 $(ProjectDir),以便可以在 T4 脚本中读取它们<--我不知道这是 DTE 附带的还是单独的过程。
请帮忙!