【问题标题】:How to configure T4 template to generate classes in different project如何配置 T4 模板以在不同项目中生成类
【发布时间】:2011-03-25 18:04:30
【问题描述】:

我正在使用新的 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 原因更多是关于我的个人偏好,而不是其他任何原因。我有我的系统来组织项目和文件,我已经习惯了,所以我可以快速找到我需要的东西,即使文件数量增加。我喜欢将我一起制作的文件保存在一些项目中,将其他人制作的文件保存在另一个项目中,并在单独的项目中生成代码。 T4 模板扰乱了这个概念,因为我想在 POCO 类所在的同一个项目中添加一些代码:(
  • 为什么不直接在其他项目中添加生成的cs文件作为文件链接?
  • @Akash Kava 如果我的要求是不可能的,这可能是一个解决方案......
  • 这些项目可能属于同一个解决方案吗?

标签: c# .net entity-framework t4 entity-framework-4.1


【解决方案1】:

多个项目共享相同的模板

每当我使用共享 T4 模板时,我都会:

  1. 创建解决方案文件夹
  2. 将我的一代T4模板放入其中,并将其扩展名设置为ttinclude
  3. 根据需要向我的项目添加额外的 T4 模板,但使用 tt 扩展名
  4. 根据模板功能,他们可能只需要引用this example of mine 中的共享 ttinclude 模板,我用它来生成枚举类型的数据库查找表;

如果您使用提供的模板,则必须对其进行一些修改才能使其正常工作,因为它们必须在与默认位置不同的位置引用 EDMX 文件。您也可以将此路径作为您在每个项目模板中覆盖的局部变量提供,这样它将使用覆盖的路径而不是 ttinclude 文件中定义的默认路径。

【讨论】:

  • 这对于不支持 T4 的项目类型并没有真正的帮助,我想将文件生成到解决方案中的其他项目中,而目标项目中没有任何 T4。
猜你喜欢
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 2012-02-16
相关资源
最近更新 更多