awesome-roslyn

Curated list of awesome Roslyn books, tutorials, open-source projects, analyzers, code fixes, refactorings, and source generators

GitHub

660 stars
42 watching
59 forks
last commit: 9 months ago
Linked from 5 awesome lists

awesomeawesome-listcode-generationcsharphacktoberfestroslynroslyn-analyzerroslyn-apivbnet

Books

Roslyn Succinctly by Alessandro Del Sole and the perfect book to start with. Explains Roslyn APIs and afterward focuses on writing analyzers and refactorings
.NET Development Using the Compiler API Book by Jason Bock. Besides analyzers and refactorings, it also explains the scripting API and provides an interesting reflection on the future of the Compiler API
Roslyn Cookbook Book by Manish Vasani, a member of the Roslyn analyzers team. After covering analyzers, refactorings, and scripting in detail, the book goes in-depth explaining how to develop new C# language features and contribute to the Roslyn source code

Tutorials

Learn Roslyn Now Series of blog posts that explore the Roslyn compiler API. It introduces the power of Roslyn through small self-contained examples. A perfect tutorial to start with :-)
How To Write a C# Analyzer and Code Fix 18,954 4 days ago The mother of all Roslyn tutorials :-) A realistic step-by-step introduction to syntax and semantic analysis as well as the syntax transformation
C# and Visual Basic - Use Roslyn to Write a Live Code Analyzer for Your API Older but still not outdated, very detailed MSDN article on writing code analyzers
C# - Adding a Code Fix to Your Roslyn Analyzer The sequel to the previous MSDN article. A detailed introduction into code fixes
Introducing C# Source Generators Original announcement of the C# 9.0 Source Generators feature. Explains what source generators are, in which scenarios they are useful, and shows how to write a simple source generator
New C# Source Generator Samples Samples on how to write a non-trivial code generator driven by additional, non-code files like CSV files or templates
C# Source Generators 2,044 2 months ago Comprehensive list of additional learning sources, samples, and experimental and productive source generators. A perfect reference once you grasp the basics

Open Source Projects

Bridge C# to JavaScript transpiler. Write modern mobile and web apps in C# and run them anywhere in JavaScript
Code Converter 826 6 days ago C# to VB.NET and VB.NET to C# transpiler
CodeAnalysis.CSharp.PatternMatching 28 over 6 years ago Intuitive pattern matching for Roslyn syntax trees. Simplifies C# syntax and semantic analysis
CodeGeneration.Roslyn 408 almost 4 years ago Roslyn-based Code Generation during a build with design-time support
dotnet-script 2,715 about 2 months ago Runs C# scripts from the .NET CLI, defines NuGet packages inline and edit/debugs them in VS Code
FlubuCore 905 7 months ago Cross platform build automation tool for building projects and executing deployment scripts using C# code
MirrorSharp 218 4 months ago Online C#, VB.NET, and F# code editor. Features code completion, method signature help, quick fixes, and diagnostics
OmniSharp Enables a cross platform .NET development in the editor of your choice. A family of open source projects, each with one goal: To enable a great .NET experience in your editor of choice
roslyn-linq-rewrite 717 over 4 years ago Compiles C# code by first rewriting the syntax trees of LINQ expressions using plain procedural code. This increases performance by minimizes heap allocations and dynamic dispatch
RoslynPad Cross-platform C# editor. Features code completion, method signature help, quick fixes, and diagnostics
RoslynQuoter 927 about 1 month ago Online tool that for a given C# program generates syntax tree API calls that construct syntax tree of that program
scriptcs Turns C# into a powerful scripting tool. Features C# REPL, installation of NuGet packages, and execution of scripts with a single line of code
Scripty 620 almost 2 years ago Tool to use Roslyn-powered C# scripts for code generation. You can think of it as a scripted alternative to T4 templates
Sharpen Visual Studio extension that intelligently introduces new C# language features into your existing code base
SharpLab .NET code playground. Displays intermediate steps and results of code compilation. Shows the code as compiler sees it. Allows selecting different branches and versions of Roslyn. Runs C#, VB.NET, and F# code in the browser
Testura.Code 297 5 months ago Wrapper around the Roslyn API used for generation, saving, and compiling C# code. Provides methods and helpers to generate classes, methods, statements, and expressions
Uno SourceGenerator 128 about 1 year ago C# source code generator based on a project being built, using all of its syntactic and semantic model information

Open Source Analyzers, Code Fixes, and Refactorings

.NET Analyzers GitHub organization for the development of Roslyn analyzers. Various repositories within the organization cover analyzers for ASP.NET Core, WPF, IDisposable, usages of System.Reflection, etc
.NET Compiler Platform ("Roslyn") Analyzers 1,582 4 days ago Diagnostic analyzers developed by the Roslyn team. Initially developed to help flesh out the design and implementation of the static analysis APIs. The analyzers cover code quality, .NET Core, desktop .NET Framework, comments in code, and more
Code Cracker 1,128 8 months ago Analyzer library for C# and VB.NET. Offers diagnostics in many categories like performance, coding styles, as well as some basic refactorings
CSharpGuidelinesAnalyzer 130 5 months ago Reports diagnostics for C# coding guidelines ( )
ErrorProne.NET 886 8 months ago Set of analyzers and code fixes focusing on the correctness and performance of C# programs. Inspired with Google's
Mapping Generator 1,030 over 2 years ago Code fix that generates arbitrary complex object-object mappings. It recognizes out of the box a large number of scenarios where mappings are used. A design-time alternative to
Nullable.Extended 42 9 months ago Roslyn tools and analyzers to improve the experience when coding with nullable reference types
Refactoring Essentials for Visual Studio 638 about 3 years ago Refactorings, analyzers and code fixes for C# and VB.NET
Roslyn Clr Heap Allocation Analyzer 645 over 2 years ago C# heap allocation analyzer that can detect explicit and many implicit allocations like boxing, closures, implicit delegate creations, etc
Roslynator 3,055 4 days ago Collection of 190+ analyzers and 190+ refactorings for C#. Covers coding style, code readability and simplification, removing redundancies, fixing compiler errors, and many more
SonarC# 780 12 days ago Static code analyzer for C# language used as an extension for the SonarQube platform
StyleCop Analyzers for the .NET Compiler Platform 2,645 about 1 month ago Port of StyleCop rules to Roslyn
VSDiagnostics 64 over 1 year ago Collection of code-quality analyzers. Covers usages of async methods, flags enums, best practices in exception handling as well as many other code-quality checks

Libraries and Frameworks for Testing Analyzers, Code Fixes, and Refactorings

Microsoft.CodeAnalysis.Testing 512 5 days ago Library for testing analyzers and code fixes with NUnit, xUnit and MSTest frameworks. A part of
RoslynTestKit 24 9 months ago Lightweight framework for writing unit tests for analyzers, code fixes, refactorings, and completion providers. It's unit testing framework agnostic

Source Generators

DpDtInject 32 over 2 years ago Proof-of-concept of a dependency injection container that transfers huge piece of resolving logic to the compilation stage. Offers additional compile-time safety and fast runtime resolution
Generator.Equals 134 6 months ago Automatically implements equality and hashing for classes and records. Supports different comparison strategies. Offers similar functionality like IL weaving-based
JsonSrcGen 147 about 3 years ago Reflection-free JSON serializer. Allows extremely fast JSON processing by generating reflection-free serializers at the compile time
Source Generator Playground Online application that lets you experiment with source generators. Perfect for learning and testing your ideas. Write your own source generator or learn from built-in examples and see the generated output
StrongInject 843 about 2 years ago Compile-time dependency injection container. Compile-time checked, reflection-free and runtime code generation free, thus fast and -friendly
StructPacker 75 over 2 years ago Low-level, lightweight and performance-focused serializer for C# struct types. Auto-generates C# serialization code to achieve peak runtime performance and efficiency
Svg to C# Source Generators 3 over 3 years ago SVG to C# compiler. Compiles SVG drawing markup to C# using as rendering engine
WrapperValueObject 52 almost 2 years ago Creates boilerplate free wrappers around types. Especially useful for creating

Blog Posts and Articles

How Microsoft rewrote its C# compiler in C# and made it open source Roslyn's journey, presented by Mads Torgersen, the lead designer of C#. Inspiring story on how Roslyn project started and why, and what it took to make it open source
Inside the .NET Compiler Platform – Performance Considerations during Syntax Analysis (#SpeakRoslyn) In-depth look at Roslyn's performance with the focus on memory consumption
Persistence, Facades and Roslyn's Red-Green Trees Inspiring introduction on how Roslyn team implemented immutable, reusable trees with cheap parent references and many other goodies. Quote: "But on the Roslyn team we routinely do impossible things" :-)
ReSharper and Roslyn: Q&A Excellent explanation why ReSharper will not use Roslyn. Includes good discussion on static code analysis and some limits of Roslyn
Roslyn performance (Matt Gertz) Insight on how Roslyn team approaches the topic of evaluating and achieving performance

Talks

The Power of Roslyn Great talk by Kasey Uhlenhuth at NDC Oslo 2018 covering Roslyn essentials and APIs and tools for building code analyzers and fixes

Backlinks from these awesome lists: