1. 程式人生 > 其它 >使用RoslynSyntaxTool工具互相轉換C#程式碼與語法樹程式碼

使用RoslynSyntaxTool工具互相轉換C#程式碼與語法樹程式碼

專案地址

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彙報至我的郵箱

編輯編輯編輯

感謝

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 及以上

已知問題:

作者資訊:

作者:林小

郵箱:[email protected]

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.