【发布时间】:2021-02-02 07:23:30
【问题描述】:
我们有许多使用 T4 和有形多文件生成库编写的模板。
一个例子如下:-
C# 库中的一些实体对象从“BaseEntity”继承并具有“RequiresAudit”属性。
通过上述“BaseEntity”的继承和“RequiresAudit”的归属,在 T4 模板中定位和分析这些实体。
一旦分析,T4 会生成 3 个 SQL 触发器文件,由 DB 团队在旧工具中应用这些触发器文件,以及一个 JSON 格式的文档文件。
因此我们要求 T4 从模板运行中生成一些人工制品 - 3 个“Entity.SQL”文件和一个“docs.json”文件。
我们在 .NET 方面的所有新代码都将移至 .NET 5,这是我们的经理们现阶段准备进行的唯一一次大爆炸。
问题...
我们如何使用 Roslyn Analyzer 或 Generator 来完成完全相同的工作? 我们必须使项目中生成的文件可用。我们如何做到这一点? 任何人都可以举一个很好的例子吗? Roslyn 是否可以将项目中的文件作为嵌入式资源包含在内,如果可以,如何?
我们真的很想学习 Roslyn,但我们也害怕我们会浪费精力。
VS2019 预览版似乎缺乏对 T4 的支持(无论如何使用 .net 5 时),而且我还担心技术运动似乎正被罗斯林世界所吸引,并且 T4 可能即将结束生命.
我读过的所有关于 Roslyn 代码生成器的文档似乎都没有留下任何文件,而是简单地将一组功能编译到程序集中,而没有任何代码源文件的痕迹。我似乎找不到一个明显的方式从 T4 到 Roslyn,就像 t4 一样。
我不需要“你为什么要这样做?”厘米。我们不能改变太多。只是一种很好的友好方式(示例)来解决问题,而无需重写我们在旧系统中拥有的各种接触点。
【问题讨论】:
标签: code-generation roslyn t4