我需要写一个网站内容管理系统,利用动态实体框架DbContext生成。作为输入,我得到了一个自定义数据类型声明(xml格式),我的C#代码知道如何解析它。在输出中,我需要获得DbContext的代码,该代码提供了一种将所提供的数据类型实例作为DbSet存储在数据库中的工具。
我可以看到.tt -> .cs生成器以Visual Studio插件的形式出现。我肯定可以创建代码,从我的自定义声明生成一个基于xml的.tt模板(我假设它是),然后为这个DbContext生成一个.tt DbContext。但是如何从代码中手动运行.tt->.cs转换呢?
发布于 2013-05-02 15:52:10
通常,T4模板在Visual Studio中的设计时进行转换。如果要在运行时使用T4模板,请将.tt项目项的“自定义工具”属性的值更改为"TextTemplatingFilePreprocessor“。
这将使Visual Studio从您的T4模板创建一个可以在运行时实例化的C#类,您可以在其中传递参数(例如,您的xml类型声明)。调用"TransformText()“将返回包含数据类的T4模板的实际输出代码。
为了在运行时也使用这些类,您需要在内存中编译输出代码。
https://stackoverflow.com/questions/16324129
复制相似问题