使用RoslynSyntaxTool工具互相转换C#代码与语法树代码

虚幻大学 虚幻 310℃ 0评论

? 优质资源分享 ?

学习路线指引(点击解锁) 知识定位 人群定位
? Python实战微信订餐小程序 ? 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
?Python量化交易实战? 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

项目地址

MatoApps/RoslynSyntaxTool: 此工具能将C#代码,转换成使用语法工厂构造器(SyntaxFactory)生成等效语法树代码 (github.com)

基础概念

Syntax Api:

Roslyn 是微软开源的 .NET 编译平台。编译平台支持 C# 和 Visual Basic 代码编译,并提供丰富的语法分析 API。

语法树(SyntaxTree)是一种由编译器 API 公开的基础数据结构。这些树描述了C#源代码的词法和语法结构。

利用语法分析 API可以将一段C#代码翻译成等效的语法树代码。

关于语法分析请查看官方文档 语法分析 (Roslyn API) 入门 | Microsoft Docs

可以通过Roslyn 入门系列文章 学习Roslyn相关知识

应用场景

  • 需要动态编译的,如在开发微服务中动态生成代理类,项目的插件化改造等
  • 需要动态生成C#代码脚本的,如项目模板生成器,C#脚本生成工具等
  • 需要分析C#使用场景,如代码安全性审查等
  • ...

介绍

RoslynSyntaxTool利用语法分析 API,提供以下功能:

  • 将指定的C#代码转为等效的语法树代码
  • 将语法树代码还原为C#代码
  • 图形化查看语法树结构
  • 查看语法树节点属性详情

这是独立开发者的一个开源项目, 希望得到您的意见反馈,请将Bugs汇报至我的邮箱

3feb72db6b94424abf6ff5e5a469c1c0 - 使用RoslynSyntaxTool工具互相转换C#代码与语法树代码[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eRBfqGom-1652721653140)(https://img2022.cnblogs.com/blog/644861/202205/644861-20220516144918417-367341982.gif "点击并拖拽以移动")]​编辑f7ab1086a30f4411ae37449b5b4e8716 - 使用RoslynSyntaxTool工具互相转换C#代码与语法树代码[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cY6kwMEX-1652721653144)(https://img2022.cnblogs.com/blog/644861/202205/644861-20220516144918417-367341982.gif "点击并拖拽以移动")]​编辑7bad19ac6e814b0fb0773d31626f7c46 - 使用RoslynSyntaxTool工具互相转换C#代码与语法树代码[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kgJBXnFa-1652721653145)(https://img2022.cnblogs.com/blog/644861/202205/644861-20220516144918417-367341982.gif "点击并拖拽以移动")]​编辑

感谢

KirillOsenkov的RoslynOuter项目,链接: https://github.com/KirillOsenkov/RoslynQuoter

语法树代码生成器代码借鉴自此项目

更新内容:

Date Version Content
V1.0 2021-3-16 初始版本
V2.0 2022-5-16 1. 升级项目框架至.Net 6.0 2. 增加ConvertToCSharp页面 3. 更新README

安装说明:

  1. 下载安装包 https://raw.githubusercontent.com/MatoApps/RoslynSyntaxTool/master/RST/rst.zip
  2. 解压并双击 setup.exe 安装

运行环境

  • Microsoft Windows 7 及以上

已知问题:

作者信息:

作者:林小

邮箱:jevonsflash@qq.com

License

The MIT License (MIT)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

转载请注明:虚坏叔叔 » 使用RoslynSyntaxTool工具互相转换C#代码与语法树代码

喜欢 (2)

您必须 登录 才能发表评论!