当前位置: 首页 > news >正文

Roslyn 入门:使用 Visual Studio 的语法可视化窗格查看和了解代码的语法树

使用 Visual Studio 提供的 Syntax Visualizer,我们可以实时看到一个代码文件中的语法树。这对我们基于 Roslyn 编写静态分析和修改工具非常有帮助。本文将介绍如何安装它和使用它。


这里是 Visual Studio 的语法可视化(Syntax Visualizer):

Syntax Visualizer

正在分析的代码文件是 MSTestEnhancer 中的 ContractTestContext.cs;也就是我的另一篇文章 Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码 中所采用的例子。

如果你是 Visual Studio 2017.6,并且在安装 Visual Studio 时选择了 Visual Studio 扩展,那么你什么都不用做就已经安装好了。否则,你需要去 .NET Compiler Platform SDK - Visual Studio Marketplace 下载安装。

安装完之后,去“视图->其它窗口”中就可以找到“Syntax Visualizer”。

视图->其它窗口->Syntax Visualizer

现在,我们在代码文件中任意地移动光标、选择代码块,都可以在 Syntax Visualizer 中看到对应的语法节点。这对我们基于 Roslyn 编写静态分析和修改工具非常有帮助。

相关文章:

  • 利用 ReSharper 自定义代码中的错误模式,在代码审查之前就发现并修改错误
  • 在编写异步方法时,使用 ConfigureAwait(false) 避免使用者死锁
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • 解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)
  • Roslyn 的确定性构建
  • 使用 MSBuild 响应文件 (rsp) 来指定 dotnet build 命令行编译时的大量参数
  • VS 编译太慢了吗?新建解决方案配置关闭一部分项目的编译
  • 流畅设计 Fluent Design System 中的光照效果 RevealBrush,WPF 也能模拟实现啦!
  • 语义版本号(Semantic Versioning)
  • 使用 GitVersion 在编译或持续构建时自动使用语义版本号(Semantic Versioning)
  • UWP 流畅设计中的光照效果(容易的 RevealBorderBrush 和不那么容易的 RevealBackgroundBrush)
  • 使用 Emit 生成 IL 代码
  • 如何快速编写和调试 Emit 生成 IL 的代码
  • 自动将 NuGet 包的引用方式从 packages.config 升级为 PackageReference
  • 冷算法:自动生成代码标识符(类名、方法名、变量名)
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Git 使用集
  • Linux各目录及每个目录的详细介绍
  • Mybatis初体验
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Terraform入门 - 3. 变更基础设施
  • tweak 支持第三方库
  • Vue.js源码(2):初探List Rendering
  • ------- 计算机网络基础
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 七牛云假注销小指南
  • 说说动画卡顿的解决方案
  • 微信支付JSAPI,实测!终极方案
  • 一个项目push到多个远程Git仓库
  • 用element的upload组件实现多图片上传和压缩
  • 优化 Vue 项目编译文件大小
  • 进程与线程(三)——进程/线程间通信
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • (2015)JS ES6 必知的十个 特性
  • (JS基础)String 类型
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (转)德国人的记事本
  • (转)关于pipe()的详细解析
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net core使用ef 6
  • .Net Remoting常用部署结构
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET业务框架的构建
  • ::前边啥也没有
  • @DataRedisTest测试redis从未如此丝滑
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600