如何解决当我们需要生成模板输出伪像时,如何用Roslyn代替T4
我们有许多使用T4和有形的多文件生成库编写的模板。
一个例子如下:-
C#库中从“ BaseEntity”继承并具有“ RequiresAudit”属性的许多Entity对象。
通过前面提到的“ BaseEntity”继承和“ RequiresAudit”属性在T4模板中定位和分析这些实体。
一旦分析了T4,就会产生3个SQL触发文件,这些触发文件将由数据库团队应用在旧版工具中,并以JSON格式提供一个文档文件。
因此,我们要求T4从模板运行中产生许多伪像-3个“ Entity.SQL”文件和一个“ docs.json”文件。
我们在.NET端的所有新代码都将移至.NET 5,这是我们的经理在现阶段准备进行的唯一一次大爆炸。
问题...
我们如何利用Roslyn分析仪或Generator进行完全相同的工作? 我们必须在项目中拥有生成的文件。我们如何实现这一目标? 谁能举一个好榜样? Roslyn可以将文件作为嵌入式资源包含在项目中吗?
我们真的很想学习罗斯林,但是我们也害怕我们会浪费精力。
VS4预览版中似乎缺少T4支持(无论何时使用.net 5),而且我还担心技术方面的发展似乎正朝着罗斯林世界发展,并且T4可能即将寿终正寝
我阅读的有关Roslyn代码生成器的所有文档似乎都没有留下任何文件,而只是将一组功能编译到了程序集中,而没有任何代码源文件的痕迹。我似乎无法找到一种从T4到Roslyn的明显方式,就像T4一样。
我不需要“你为什么要这样做?”评论。我们不能改变太多。这是解决问题的一种很好的友好方式(示例),而无需重新编写遗留系统中存在的各种接触点。
解决方法
如果我仔细阅读您的方案,则您生成的文件是SQL或JSON;现在,假定由源生成器生成的任何生成文件都是C#文件,并且隐式包含在编译中。我们还没有支持仅根据您的情况写出其他文件。从16.8 Preview 4开始,您现在可以设置一个属性,以将C#文件也写到目录中,作为实际编译步骤的一部分,但是同样,它仍然仅是C#文件。
这绝对是我们正在考虑的事情(源生成器设计团队上周召开了一次会议,开始考虑此案),但我们尚未完全致力于该场景,也没有时间表我们可能会出货。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。