Stefan Pölz

Clean C# Coder – Test-driven .NET Developer

Let's Build an incremental source generator with Roslyn

Speaker's Biography

Stefan's passion is to practice Clean Code and test-driven development in order to build maintainable high-performance software in an ever-evolving team, supported by tools from the .NET Ecosystem. He loves to attend and speak at public developer events, co-organize local community gatherings, stream live programming sessions, and author open source projects, complementing his expertise in professional software development. As Microsoft MVP (Developer Technologies), JetBrains Community Contributor (.NET) and co-organizer of, it's his ambition to share knowledge about everything C#.

Workshop Abstract

(Incremental) source generators allow us to trade in a bit of compile-time for better performance during run-time: Instead of resorting to general-purpose types and methods, we may utilize auto-generated variants optimized specifically for our user code. With these at our fingertips, we could facilitate high-performance scenarios by, for example, a Reflection-free source. If nothing else, this Roslyn-based metaprogramming relieves authors of writing repetitive patterns over and over again.

Source generators have been available since the .NET 5 SDK. Along with the introduction of incremental generators in the .NET 6 SDK, Microsoft has also started releasing generators and continued to do so with the .NET 7.0 SDK.

We will try some generators, from both NuGet and out of the box, to understand typical use cases. After examining their implementation to learn more about the programming model, we will build our very own incremental source generator, test-driven of course, and tool-assisted. As finishing touches we shall apply mutation testing and benchmarking before we deem our package almost ready for potential publication.

Our Speakers

Adora Nwodo

Senior Software Engineer & Multi-Published Author

Ahmet Faruk Ulu

Software Developer at Volosoft

Alberto Acerbis

Passionate dev, Author, Learner

Alexej Sommer

Lead Software Engineer at Capgemini

Aman Sharma

Senior Software Developer at WAi Technologies

Brian Gorman

Microsoft Azure MVP, Speaker, Author, Trainer and .NET Developer

Cecil Phillip

Developer Advocate at Stripe

Dino Esposito

CTO at Crionet

Engincan Veske

Software Engineer at Volosoft. Core team member of ABP Framework.

Ferdinando Santacroce

Uncovering Better Ways of Developing Software and Organizations

Halil Ibrahim Kalkan

Co-Founder of Volosoft

Hannes Lowette

Microsoft MVP, Head of Learning & Development at Axxes

Irina Scurtu

Microsoft MVP, Software Architect at Dsi Solutions

Jamie Taylor

.NET developer at RJJ Software LTD

Jessica Engström

Passionate People Centric Technologist

Jimmy Engström

Microsoft MVP

Johan Smarius

Microsoft MVP on .NET and DevOps, Software Developer at JMAC Software Solutions

Juergen Gutsch

Software Engineer at the YOO AG

Kaushik Gokhale

Senior Software Developer at WAi Technologies

Mitchel Sellers

Founder/CEO/Director of Development at IowaComputerGurus Inc.

Nicola Iarocci

Software Craftsman at CIR 2000

Omkar Choudhari

CTO at WAi Technologies

Rebai Hamida

Microsoft MVP and MCT, Docker Captain, Cloud Solutions Architect, Speaker, Author

Ryan Niño Dizon

Software Development Lead at ISD Feniqs

Sergei Gorlovetsky

CTO at Decision Tree Technology

Shaun Lawrence

Senior Software Engineer working in all things .NET at Tinysoft Ltd

Todd Gardner

CEO and Founder at TrackJS and Request Metrics

Wojciech Krasa

Full Stack Developer at HeadChannel