ページ内ナビ
概要
RoslynはC#とVisual Basic compilerのopen-source implementationであり、compiler内部で使うsyntax tree・semantic model等をAPIとして公開する.NET Compiler Platformです。compilerそのものに加え、analyzer、code fix、refactoring、source generation等のdeveloper toolingを同じ言語model上で構築できます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
C#・Visual Basic compilerのsyntax treeをAPIから扱う
Syntax APIはcompilerと同じparserが生成するfull-fidelityかつimmutableなsyntax treeを公開し、node・token・triviaを解析できます。
compilerと同じlanguage modelでcode analysis toolを作る
Roslyn APIを使うことでsource textだけのheuristicではなく、compilerが理解する構文・意味情報を基にanalyzerやdeveloper toolを実装できます。
向いている用途
導入前の確認
GitHub Releasesのlatestを現行version判定に使わない
GitHub Releasesのlatestはv4.0.1(2021年)のままですが、NuGetでは5.x系stable packageが継続公開されています。package versionはNuGetと対象.NET SDKを基準に判断します。
compiler API versionをanalyzer hostと合わせる
Visual Studio、dotnet SDK、build server等のhost側Roslyn versionとanalyzerが参照するpackage versionに差があるとAPI compatibilityやload問題が起こり得ます。deployment先のhost versionを基準にpackageを選定します。
syntax treeはimmutableなので変換は新しいtreeを生成する
Roslyn syntax treeはimmutableです。source transformationでは既存nodeを書き換えるのではなくreplacement node/treeを構築する設計を前提にします。
出典:[2]
参考にした公式資料
- [1]Roslyn README(2026-10-04)
- [2]Roslyn C# Syntax Analysis walkthrough(2026-10-04)
- [3]Microsoft.CodeAnalysis.CSharp 5.9.0 on NuGet(2026-10-04)
- [4]Roslyn GitHub latest release v4.0.1(2026-10-04)
- [5]Roslyn MIT license(2026-10-04)
編集部からの補足
GitHub Releasesのlatest表示はv4.0.1(2021年)のままで現行versionの指標として使えません。package利用ではNuGet/SDK側のreleaseを正本にし、2026年10月4日時点のstable Microsoft.CodeAnalysis.CSharp 5.9.0など、対象toolchainとversionを揃えてください。
3ステップで試す
- 1
code analysis用console projectを作成する
Roslyn APIを試すための最小.NET console projectを作成します。
dotnet new console -n RoslynDemo -f net10.0 - 2
Microsoft.CodeAnalysis.CSharp 5.9.0を追加する
2026年10月4日時点のstable packageをversion固定で追加します。GitHub Releasesのlatest v4.0.1は現行package versionではありません。
dotnet add RoslynDemo/RoslynDemo.csproj package Microsoft.CodeAnalysis.CSharp --version 5.9.0 - 3
C# sourceをparseしてroot kindを表示する
compilerと同じSyntax APIでsource textをparseし、syntax treeが生成できることを確認します。
printf 'using Microsoft.CodeAnalysis.CSharp;\nvar tree = CSharpSyntaxTree.ParseText("class Demo { int X; }");\nConsole.WriteLine(tree.GetRoot().Kind());\n' > RoslynDemo/Program.cs && dotnet run --project RoslynDemo/RoslynDemo.csproj
成長
成長の推移 · 直近30日
20,702 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 282
- Open PR
- 742
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
GitHubデータ
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Svelte88,230 Stars
共通タグ 1件 · 共通カテゴリ 1件
componentをcompile時に効率的なJavaScriptへ変換し、runesでreactive UIを記述する
JavaScript - CPython77,417 Stars
共通タグ 1件 · 共通カテゴリ 1件
Python処理系・標準ライブラリ・build/test systemを開発するreference implementation
Python - Swift70,457 Stars
共通タグ 1件 · 共通カテゴリ 1件
メモリ安全性・ネイティブ性能・C/Objective-C連携を両立するcross-platform programming language
Swift - Ruff49,889 Stars
共通タグ 1件 · 共通カテゴリ 1件
PythonのlintとformatをRust実装の単一CLIへまとめ、900超のruleと自動修正を高速に実行する
Rust - ESLint27,531 Stars
共通タグ 1件 · 共通カテゴリ 1件
ASTとpluggable ruleでJavaScriptの問題patternを検出し、flat configをrepositoryのcode quality policyとして自動化する
JavaScript - Ruby23,771 Stars
共通タグ 1件 · 共通カテゴリ 1件
Web開発・自動化からCRuby VM、YJIT/ZJITまで同じ上流で追える言語処理系
Ruby
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。