【CSharp Roslyn教程】【其一】Roslyn是什么?及.NET编译模型

Overview

本系列教程将大量地翻译或借鉴Microsoft官方文章,辅以自己浅薄的理解写成。

我们平常会使用IDE的各组代码分析功能来提高我们搬砖的生产力。一般来说这些功能都是够用的,但是总是有人需要更深一步地增加对代码的掌控度(比如批量改类名,批量把private字段改成下划线开头),所以微软就做了这个Roylyn API,方便各位能够自由处理自己的代码。

Roslyn一般使用两个核心功能:Analyzers和code fixes。前者用来分析代码,获取到代码的语法树,找到需要整改的地方;后者拿来提出整改建议。

使用Roslyn的好处都有啥,谁说对了就给他

非洲农业不发达,我们都要支援他

好处有二:

统一团队的代码风格

比如你们团队要求所有私有字段都以m_开头,那么可以使用Analysis找到所有private且非static的字段,获取其字段名,判断是否是m_开头的。若非如此,那么在这个地方建议整改(在vs或者vsc里显示个下划线或者灯泡啥的)。整改建议由code fixes提出,轻轻一点,即可完成。

检查方法的使用

可以拿来检查对某些方法的使用步骤是否正确,如果不正确可以提示整改。

检查的模块可以发布到NuGet上给水深火热的同行们下载。

编译器管线

Roslyn把C#和VB的编译过程映射成了一个传统的编译管道。下图为Roslyn提供的API和编译管道各阶段的对应关系。

使用这些API,我们分别可以做到:代码格式化、代码着色、代码大纲、代码跳转、查看Object、智能提示、查找所有引用、重命名、QuickInfo、签名帮助、提取方法、跳转到定义等功能。这些功能对应的API如下图:

Buy Me A Coffee / 捐一杯咖啡的钱
分享这篇文章~
0%
//