Phase 17 of 30 · Topic 17.5

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.