【发布时间】:2013-01-20 10:50:07
【问题描述】:
我正在尝试为代码生成编写一些漂亮且结构化的 t4。我将我的逻辑分解为可重用的函数并将它们放入单独的文件中(就像“普通”代码一样)。问题是我不能包含一个通用文件,因为它会被包含多次。
例如,我有 4 个文件:Core.tt、File1.tt、File2.tt 和 MainTemplate.tt。
Core.tt 包含在 File1.tt 和 File2.tt 中。
而File1.tt 和File2.tt 包含在MainTemplate.tt 中
当我想从MainTemplate.tt 生成输出时,我收到以下错误:
Error 8 Compiling transformation: The type 'Microsoft.VisualStudio.TextTemplating62CD98C8FF0EB737CAFBD5ED17A158C3.GeneratedTextTransformation' already contains a definition for 'PropertyAttribute'
我猜,原因是Core.tt 被包含了两次。我的问题有解决方法吗?在 c++ 中可以添加标头保护:#ifndef xxx #define xxx #endif
【问题讨论】:
-
我花了不到 2 个小时编写了一个与 T4 等效的东西,它既解决了这个问题,也解决了库模板更改时重新转换所有依赖模板的问题。 T4设计得不好。不要使用它。
-
@Jack:那你介意为 T4 项目做贡献吗?
标签: c# visual-studio code-generation t4