Debugging & Authoring Custom Roslyn Source Generators
1Concept
Source generators run inside the `devenv.exe` (Visual Studio) or `dotnet build` process. Use `GeneratorExecutionContext.ReportDiagnostic` to emit custom build warnings and errors.
2Architecture Diagram
Authoring Checklist: 1. Class implements IIncrementalGenerator 2. Annotated with [Generator] 3. Targets netstandard2.0 for Roslyn compiler host compatibility 4. Output source added via context.RegisterSourceOutput()
3Code Example
C# 13 & .NET 9
using System;
public class GeneratorAuthoringDemo
{
public static void Main()
{
Console.WriteLine("Source Generators must be built as netstandard2.0 analyzers.");
}
}4Expected Output
Source Generators must be built as netstandard2.0 analyzers.
5Key Takeaways
- ✓Set `<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>` to inspect generated `.g.cs` files under `obj/` folder.
- ✓Use `Debugger.Launch()` inside generator initialization to attach Visual Studio debugger.
- ✓Keep source generator dependencies strictly internal.