Skip to content

Instantly share code, notes, and snippets.

@TessenR
Last active August 30, 2023 21:34
Show Gist options
  • Select an option

  • Save TessenR/ab40df2d6e971a8d6e5c6c6295d85d11 to your computer and use it in GitHub Desktop.

Select an option

Save TessenR/ab40df2d6e971a8d6e5c6c6295d85d11 to your computer and use it in GitHub Desktop.
Source generators in action links

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 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment