.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任務處理的另一種形似的加強版本。

資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章