- 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