【问题标题】:Interactive T4 Templates交互式 T4 模板
【发布时间】:2016-03-11 21:57:49
【问题描述】:

我在我的大多数 MVC 项目中使用一组 T4 模板,这些模板创建一组管理器(想想存储库)、ViewModel 和扩展 - 实用程序扩展方法,例如 ToModel()、ToViewModel() 和 ToSelectList()。到目前为止,一切都很好。现在为我编写了大量的基本“管道”代码。

我真正想要的是能够从外部文件配置在这些模板中使用的变量,然后让模板在执行时使用该文件。

我知道我可以在另一个 T4 模板中运行另一个模板,但我找不到在单独的文件中添加配置的方法。

目前,我在我的数据库中包含一个“实体”表并将其用于配置。它可以工作,但在数据库中有这个感觉很脏。

【问题讨论】:

    标签: configuration t4


    【解决方案1】:

    T4 最终只是 C#/VB.Net 代码,您几乎可以使用任何您想要的库。如果你想要一个外部配置文件,你可以在你的项目中使用json.net 和一个简单的 json 文件。在您的模板开始时,使用框架中的文件 io 来读取您的 json 文件内容,将其传递给 json.net,然后提取您需要的参数。使用 json.net 最常见的方法是序列化和反序列化类,但它还允许您访问 lower json dictionary like object,您可以使用 linq 从 json 获取所需的任何数据。

    但请记住,解决问题的方法总是不止一种,这是我一段时间以来一直试图解决的问题。我首选的解决方案是我创建的一个名为T4 Awesome 的扩展。我的扩展采用完全不同的方法在 Visual Studio 中使用 T4 搭建脚手架。我在 IDE 周围添加了多个工具窗口和上下文菜单,以便更快、更轻松地管理和使用 T4 模板。我有一个动态 UI,可以让您定义简单的参数并将它们传递给您的模板,还可以让您更好地控制最终输出文件的位置。随意检查一下。并且完全免责声明,我为这个扩展收费,但有一个免费的社区版本应该能够做你想做的事。

    【讨论】:

    • 谢谢弗兰克 .. 似乎是一个计划 .. 我也要去看看那个扩展。感谢您的时间。