-
Code used in the live coding demo at DotNext
-
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
-
IL weaving
- Fody github repository: 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
JsonSrcGen - serialization to Json without reflection: Github repository - https://github.com/trampster/JsonSrcGen Blogpost introduction - https://trampster.blogspot.com/2020/09/jsonsrcgen-corert-pure-magic-in-my.html
Roslyn pull request replacing script-based code generation of C# syntax nodes from .xml file with source generator approach dotnet/roslyn#47252
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
- How to 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
How to 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
How to add additional properties to files provided 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
INotifyPropertyChanged source generator implementation from Microsoft https://github.com/dotnet/roslyn-sdk/blob/master/samples/CSharp/SourceGenerators/SourceGeneratorSamples/AutoNotifyGenerator.cs
Changes to partial methods in C# 9 https://github.com/dotnet/csharplang/blob/master/proposals/csharp-9.0/extending-partial-methods.md
Generator examples from Microsoft Source code - 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/
Online sandbox playground https://sourcegen.dev
Examples Svg to SKPicture code - https://github.com/wieslawsoltes/SourceGenerators Serialization to JSON withou reflection - https://github.com/trampster/JsonSrcGen Assembly-wide constants such as product version - https://github.com/kzu/ThisAssembly Compile-time string literals to ReadOnlySpan conversion - https://github.com/ufcpp/StringLiteralGenerator