十年磨一劍,微軟將 C# 與 Visual Basic 編譯器**完全用 C# 重寫**,發布 Project Roslyn**(代號「Roslyn」)**。這不僅是編譯器的替換,更是將編譯器作為服務開放,賦予開發者「編譯器即 API」的能力,徹底改變工具鏈生態。

Roslyn 首席架構師:C# 之父 Anders Hejlsberg
| 場景 | 傳統方式 | Roslyn 方式 |
|---|---|---|
| 代碼分析/風格檢查 | FXCop (事後 IL 分析) | Analyzer (實時源碼分析,VS 原生集成) |
| 自動重構 | ReSharper 等插件獨立實現 | 官方 API 統一語法樹操作,重構更準確、可擴展 |
| 動態代碼生成/執行 | CodeDom / CSharpCodeProvider (笨重、慢) | CSharpScript / Compilation API (輕量、快、支持交互) |
| 原始碼生成器 | T4 模板 / 獨立工具 | Source Generators (編譯期管道內生成代碼,零運行時開銷) |
Roslyn 將代碼解析為不可變、完整保真的語法樹,包含所有空白、註釋、指令。開發者可遍歷、查詢、修改樹節點,再序列化回代碼。
// 示例:查找所有公開類的方法
var tree = CSharpSyntaxTree.ParseText(code);
var methods = tree.GetRoot()
.DescendantNodes()
.OfType<MethodDeclarationSyntax>()
.Where(m => m.Modifiers.Any(SyntaxKind.PublicKeyword));
record、init、模式匹配等新語法,皆先在 Roslyn 實現驗證。下載:Roslyn GitHub Repo | NuGet: Microsoft.CodeAnalysis
立即在 VS 2022+ 體驗:Analyzer with Code Fix 專案模板 → 編寫自定義診斷規則 → 實時生效。
Roslyn 讓「理解代碼」不再是編譯器的專利,而是每個開發者觸手可及的能力。這是 C# 生態邁向「語言即平台」的關鍵一步。