Luk*_*oid 5 c# t4 entity-framework tangible-t4-editor clarius-visual-t4
我一直在编写一个程序集来简化我的POCO类型生成.我有一个核心程序集,其中包含多个tt文件并用于生成代码.
我这样做的原因是因为无论我尝试哪种扩展(Devart T4,Tangible-T4或Visual T4)都没有Visual Studio的C#编辑器提供的智能感知和支持,所以在纯C#编写代码生成改进了经验很多.
我现在面临的最大问题是,实体框架辅助类(如事实Accessibility,CodeGenerationTools,MetadataTools等)是一个ttinclude文件,而不是一个组件内定义; 目前我不得不重写这些类提供的许多功能,以便可以从程序集中使用它.
我的问题是,为什么实体框架团队决定使用ttinclude文件而不是某些已编译的程序集?使用程序集方法似乎在更多情况下会更加可用,并且仍然不会影响T4代码生成(而不是使用<#@ include #>它<#@ assembly #>).
我想知道解决这个问题的最佳方法是什么,我已经考虑EF.Utility.CS.ttinclude过TextTransform.exe,然后采用生成的C#并编译它,这是可取的吗?
谢谢,卢克
更新
目前我所做的是添加EF.Utility.CS.ttinclude到我的项目,将文件上的自定义工具设置为TextTemplatingFilePreprocessor.这将生成包含类的代码.然后我复制了这个cs文件,删除了负责编写输出的类(它有方法TransformText())并编译成程序集.我现在可以在程序集中使用实体框架实用程序类.
使用而不是汇编的原因ttinclude与使用 T4 而不是自定义工具来生成类的原因相同(这是您实际上正在做的事情,也是大多数设计人员以前使用的)。T4ttinclude可以更改。您可以复制ttinclude并创建小的更改,并将其包含在每个项目基础的主要 T4 中。
顺便提一句。你知道吗,有数以万计的程序员可以在没有任何智能感知的情况下编写代码;)对智能感知的支持较差并不是放弃使用 T4 模板的理由。
| 归档时间: |
|
| 查看次数: |
4318 次 |
| 最近记录: |