.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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用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