.Net6(5)SourceGenerator

序言

编译时生成代码

 

1 SourceGenerator介绍

SourceGenerator于2020年4月29日在微软的.net blog首次介绍,大概说的是开发者编可以写分析器,在项目代码编译时,分析器分析项目既有的静态代码,允许添加源代码到GeneratorExecutionContext中,一同与既有的代码参与编译。

2 SourceGenerator未出生时

在还没有SourceGenerator的时候,开发者要实现AOP框架时,往往使用以下技术:

  • Emit技术,运行时生成代理类型,难点比较低且不用考虑语言的语法,但不适用于需要完全AOT编译的平台。
  • msbulid+代码分析+代码生成,拦截build的某个阶段运行task,task分析既有代码的语法,然后生成代理代码到编译器中。
  • msbuild+Mono.Cecil, 拦截build的某个阶段运行task,task通过Cecil静态修改编译输出的程序集,补充代理IL到程序集中,然后程序集可能会继续参与下一步的AOT编译过程。

在编译器期间 把特定的字符串代码编译和原有的代码进行集成,是反射,IL编织,MSBuild任务处理的另一种形似的加强版本。

资料

https://devblogs.microsoft.com/dotnet/introducing-c-source-generators/

https://www.bilibili.com/video/BV1CZ4y1Q7oK/?vd_source=a56db24cb8cab4dd8153f9a519787c89

http://www.manongjc.com/detail/42-eikwbfrjdchjpzt.html

 

posted @   ~沐风  阅读(130)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2019-04-17 .Net6(1)学习路线
2017-04-17 spring框架学习(4)AOP(上)
2017-04-17 spring框架学习(3)IOC

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示