- Code used in the live coding demo at DotNext
- https://github.com/TessenR/NotifyPropertyChangedDemo
- A simple demo with NotifyPropertyChanged generator focused on being as simple as possible. It adds a property changed event to all types implementing INotifyPropertyChanged interface and adds properties raising this event for all fields with names ending with *BackingField suffix. It covers debugging, testing and simple generator code.
- https://github.com/TessenR/BestPracticesSourceGeneratorsDemo
- A demo focused on useful approaches to source generators' problems such as decresing their work time, producing diagnostics and configuration options.
- Source generators introduction by Microsoft
- Blog post: https://devblogs.microsoft.com/dotnet/introducing-c-source-generators/
- Source generators cookbook: https://github.com/dotnet/roslyn/blob/master/docs/features/source-generators.cookbook.md
- Online sandbox playground: https://sourcegen.dev
- Source generator examples from Microsoft
- INotifyPropertyChanged source generator implementation from Microsoft: https://github.com/dotnet/roslyn-sdk/blob/master/samples/CSharp/SourceGenerators/SourceGeneratorSamples/AutoNotifyGenerator.cs
- Source code for all examples: https://github.com/dotnet/roslyn-sdk/tree/master/samples/CSharp/SourceGenerators
- Blogpost with explanation and how-tos - https://devblogs.microsoft.com/dotnet/new-c-source-generator-samples/
- How to
- Pack your generator in a nuget package: https://github.com/dotnet/roslyn/blob/master/docs/features/source-generators.cookbook.md#package-a-generator-as-a-nuget-package
- Declare and check dependencies of code produced by a source generator: https://github.com/dotnet/roslyn/blob/master/docs/features/source-generators.cookbook.md#use-functionality-from-nuget-packages
- Use additional files from source generators
- Declaration in .csproj: https://github.com/dotnet/roslyn/pull/47252/files#diff-5813a1e65423995c3e5401e8cf7f4fe29041c19767c9e10188e88b1cc39c3882R38
- Usage in a source generator: https://github.com/dotnet/roslyn/pull/47252/files#diff-bc078f8b0a1bfa7c287e5b0e5858682a10fb2753fc0afe582219c568a949be9bR54
- Provide additional properties to files available to source generators
- How to declare a property for additional files: https://github.com/wieslawsoltes/SourceGenerators/blob/182b182fe2f2c1434aa98367edb30e944a9c7b3c/src/Svg.Skia.SourceGenerator/Svg.Skia.SourceGenerator.props#L4
- How to read the property in a source generator - https://github.com/wieslawsoltes/SourceGenerators/blob/182b182fe2f2c1434aa98367edb30e944a9c7b3c/src/Svg.Skia.SourceGenerator/SvgSourceGenerator.cs#L65
- How to provide the value of the property for a file - https://github.com/wieslawsoltes/SourceGenerators/blob/182b182fe2f2c1434aa98367edb30e944a9c7b3c/samples/Svg.Skia.SourceGenerator.Sample/Svg.Skia.SourceGenerator.Sample.csproj#L18
- How to utilize MSBuild properties from source generators
- Documentation from Microsoft: https://github.com/dotnet/roslyn/blob/master/docs/features/source-generators.cookbook.md#consume-msbuild-properties-and-metadata
- Blogpost with examples: https://jaylee.org/archive/2020/09/13/msbuild-items-and-properties-in-csharp9-sourcegenerators.html
- My generator doesn't work with WPF. It's because of the intermediate projects used for building WPF that don't utilize generators.
- Here's an issue for WPF: https://github.com/dotnet/wpf/issues/3404
- You can workaround the issue by adding `true` to your WPF project. This setting will be enabled by default soon.
- Changes to partial methods in C# 9
- https://github.com/dotnet/csharplang/blob/master/proposals/csharp-9.0/extending-partial-methods.md
- IL weaving
- Fody
- Github repository with a list of add-ins: https://github.com/Fody/PropertyChanged
- PostSharp:
- Logging demo: - https://www.postsharp.net/logging
- Code for logging examples - https://github.com/postsharp/PostSharp.Samples/tree/master/Diagnostics/PostSharp.Samples.Logging.NLog
- Roslyn pull request replacing script-based code generation of C# syntax nodes from .xml file with source generator approach
- https://github.com/dotnet/roslyn/pull/47252
- Examples of existing generators
- Svg to SKPicture code: https://github.com/wieslawsoltes/SourceGenerators
- Serialization to JSON withou reflection
- Github repository: https://github.com/trampster/JsonSrcGen
- Blogpost introduction: https://trampster.blogspot.com/2020/09/jsonsrcgen-corert-pure-magic-in-my.html
- Assembly-wide constants such as product version: https://github.com/kzu/ThisAssembly
- Win32 P/Invoke methods and required types: https://github.com/microsoft/CsWin32
- Compile-time string literals to ReadOnlySpan conversion: https://github.com/ufcpp/StringLiteralGenerator
- A good list of existing source generators: https://github.com/amis92/csharp-source-generators