People very rarely rely on extra source code generation stages or preprocessors in C#. The Javascript ecosystem is dependent on them because Javascript is the only language that's a first class citizen in the browser. You can also do some pretty expressive things in C# with LINQ, expression trees, reflection, and so on. You can even emit IL at runtime if you really need to.
https://learn.microsoft.com/en-us/dotnet/csharp/advanced-top...
The only C# generator I'm familiar with is for protobuf. I suppose the P/Invoke generators count too.