C#
.NET
Backend
Client Apps

C# Source Generators

C#C#
.NET.NET

Zweitägiger Workshop zur Roslyn-basierten Compile-Time-Code-Generierung: inkrementelle Source Generators und Analyzers erstellen, Generator-Unit-Tests schreiben, externe Daten zur Compile-Zeit einlesen und C#-Interceptors implementieren — zur Eliminierung von Boilerplate und Verbesserung der Anwendungsperformance.

C# Source Generators

Dauer: 2 Tage

Zweitägiger Workshop zur Roslyn-basierten Compile-Time-Code-Generierung: inkrementelle Source Generators und Analyzers erstellen, Generator-Unit-Tests schreiben, externe Daten zur Compile-Zeit einlesen und C#-Interceptors implementieren — zur Eliminierung von Boilerplate und Verbesserung der Anwendungsperformance.

Zielgruppe

.NET-Entwickler, die Compile-Time-Code-Generierung einsetzen möchten, um Boilerplate zu eliminieren, Muster durchzusetzen und die Anwendungsperformance zu verbessern. Der Workshop richtet sich an Entwickler, die Frameworks, Bibliotheken oder umfangreiche Anwendungen erstellen, bei denen wiederkehrende Code-Muster eine Wartungslast darstellen.

Voraussetzungen

  • Fundierte Kenntnisse in C# und .NET (C# 10+ empfohlen)
  • Grundkenntnisse der Roslyn Compiler API sind hilfreich, aber nicht erforderlich
  • Visual Studio 2022/2026 oder Rider mit installiertem .NET 10 SDK

Lernziele

Nach Abschluss dieses Workshops werden die Teilnehmer in der Lage sein:

  • Zu verstehen, was Source Generators sind, wie sie in die Roslyn-Kompilierungspipeline integriert sind und wann sie gegenüber Alternativen wie Reflection oder T4-Templates vorzuziehen sind
  • Vorhandene Source Generators aus NuGet-Paketen zu konsumieren und in einem Projekt zu konfigurieren
  • Inkrementelle Source Generators mit der IIncrementalGenerator-API von Grund auf zu erstellen
  • Unit Tests für Source Generators mit den Microsoft.CodeAnalysis.Testing-Bibliotheken zu schreiben
  • Externe Daten (XML, JSON) zur Compile-Zeit zu lesen, um die Code-Generierung zu steuern
  • C# Interceptors zu implementieren, um Methodenaufrufe zur Compile-Zeit zu ersetzen, ohne vorhandenen Quellcode zu ändern
  • Performance-Best-Practices anzuwenden: inkrementelle Pipelines, Caching, Diagnose-Reporting und Vermeidung unnötiger Neugenerierung

Kursinhalt

  • Foundations and architecture
  • Implementation patterns and best practices
  • Integration, testing, and deployment

Erweiterte Lernpfade

  • Roslyn-Analyzer und Code Fixes: Generatoren mit Diagnosen kombinieren, die Entwickler zu generierten APIs leiten
  • Scriban- und T4-artige Templates innerhalb von Generatoren für komplexe Multi-File-Ausgaben
  • Integration mit Verify.SourceGenerators für Golden-File-Snapshot-Tests
  • Source Generators in Blazor und MAUI einsetzen: Compile-Time-Routen-Generierung und plattformspezifischer Code

Praktische Übungen

  • Die Ausgabe der Source Generators System.Text.Json und Microsoft.Extensions.Logging in einem bestehenden Projekt konsumieren und inspizieren.
  • Einen inkrementellen [GenerateDto]-Generator erstellen, der DTO-Records aus annotierten Domain-Klassen emittiert.
  • Eine vollständige Unit-Test-Suite mit Microsoft.CodeAnalysis.CSharp.Testing schreiben: Happy Path, Diagnosen und No-Output-Fälle.
  • Einen Generator erstellen, der eine api-schema.xml-AdditionalFile parst und eine stark typisierte HTTP-Client-Klasse mit XML-Dokumentationskommentaren emittiert.
  • Einen C#-Interceptor-Generator implementieren, der Reflection-basierte Methodenaufrufe durch generierte, Zero-Allocation-Äquivalente ersetzt.
  • Eine inkrementelle Generator-Pipeline profilieren und optimieren: IEquatable<T> zu Modell-Typen hinzufügen, Caching-Verhalten verifizieren und Build-Zeit-Verbesserung messen.
  • Den fertigen Generator als NuGet-Paket mit korrektem buildTransitive-Layout verpacken und aus einem separaten Consumer-Projekt testen.

Ergebnisse

  • In der Lage, zu beurteilen, wann Source Generators das richtige Werkzeug sind, und die Abwägungen gegenüber Reflection, T4 und IL-Weaving zu erläutern
  • Versiert in der Implementierung von IIncrementalGenerator mit korrekt strukturierten, cache-freundlichen Pipelines
  • Kompetent im Testen von Generatoren mit Microsoft.CodeAnalysis.CSharp.Testing inklusive Diagnose- und No-Output-Assertions
  • Fähig, Code-Generierung aus externen XML- und JSON-Schema-Dateien über AdditionalFiles zu steuern
  • Erfahren im Schreiben von C#-Interceptors, um Aufrufstellen zur Compile-Zeit transparent zu ersetzen
  • In der Lage, Generator-Pipelines für Build-Performance mit IEquatable<T>, WithTrackingName und gestuften Transforms zu optimieren
  • Bereit, Generatoren als NuGet-Pakete mit korrektem Multi-Targeting und Asset-Layout auszuliefern

Interesse am Training?

Wichtiger Hinweis zu Angeboten und Preisen

Informationen, Termine, Verfügbarkeiten und Preise auf dieser Website erfolgen ohne Gewähr und stehen unter Vorbehalt der Bestätigung. Eine Trainingsanfrage begründet noch keinen verbindlichen Vertrag. Details finden Sie in unseren AGB.

Formular wird geladen...

Formular wird geladen...

Das Anfrageformular wird initialisiert. Wenn diese Meldung bestehen bleibt, laden Sie bitte die Seite neu oder kontaktieren Sie uns direkt unter office@cninnovation.com.

AI
An unhandled error has occurred. Reload 🗙