如何配置T4模板以在不同的项目中生成类

7
我正在使用新的Entity Framework 4.1模型优先方法,它利用T4模板从可视化模型生成类。
我能否配置T4模板以在另一个项目中创建POCO类和上下文类(或通常生成的任何内容)?
请注意,我不想将T4模板(带有.tt文件扩展名的文件)移动到另一个项目中,然后只需将模板更改为持久性项目中的EDMX文件。我真的希望它可以在模板位置之外的另一个项目中生成这些类。这可能吗?
谢谢您的回答
注:这不是重复问题Generate POCO classes in different project to the project with Entity Framework model,因为那里的作者想要的正是我不想要的:将整个模板与生成的类一起移动。
我完全理解移动整个模板并不意味着其他项目会变得具有持久性感知。尽管如此,我有我的理由,为什么我不想将其放在与POCO类相同的项目中。

你能解释一下你的理由吗?我担心你想要的不是 T4 模板的一部分,而是执行模板逻辑并修改项目文件(添加新文件)的自定义工具。 - Ladislav Mrnka
@Ladislav Mrnka 原因更多是出于我个人的喜好而非其他任何原因。我有自己的系统来组织项目和其中的文件,我已经习惯了它,所以我可以很快地找到我需要的东西,即使文件数量增加也不会耽误我。我喜欢将我制作的文件放在一些项目中,将其他人制作的文件放在另一个项目中,并将生成的代码放在单独的项目中。但是 T4 模板会破坏这个概念,因为我想在同一个项目中添加一些代码,而这些代码与 POCO 类将在同一处 :( - Rasto
1
为什么不将生成的 cs 文件作为文件链接添加到您的其他项目中呢? - Akash Kava
@Akash Kava,如果我提出的问题不可能实现,那也许那是一个解决方案... - Rasto
这些项目可能是同一个解决方案的一部分吗? - Robert Koritnik
@Robert Koritnik 是的,它们是。 - Rasto
1个回答

2

多个项目共享相同的模板

每当我使用共享的T4模板时,我会执行以下操作:

  1. 创建一个解决方案文件夹
  2. 把我的生成T4模板放到其中,并将其扩展名设置为ttinclude
  3. 在需要的任何项目中添加其他T4模板,但扩展名为tt
  4. 根据模板功能,它们可能只需要引用共享的ttinclude模板,例如我的这个示例,我用它来生成数据库查找表的枚举类型;

如果您正在使用提供的模板,则必须对其进行一些修改以使其工作,因为它们必须引用位于不同位置的EDMX文件。您也可以将此路径作为本地变量提供,并在按项目模板中覆盖它,以便它将使用已覆盖的路径而不是在ttinclude文件中定义的默认路径。


这对于不支持T4的项目类型并没有真正的帮助,我想在解决方案的其他项目中生成文件,而目标项目中没有任何T4。 - Maslow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接