Session

The [Source Code] Generation Game

There has been a lot of buzz around the introduction of source code generators in .NET 5 and it's there's more to come in .NET 6 and .NET 7 .

But, how did we get here and what may the future hold?

Starting with the question of "What is code generation?", I present a brief history of my journey into source code generation, starting with the ZX Spectrum (program published in a UK magazine to convert machine code into BASIC DATA statements), through the Visual Basic 3-6 years (VB code created when element clicked upon; tools to generate VB from SQL tables and stored procs)

I will then move on to do a whistle-stop tour of
* How .NET introduced tooling in Visual Studio for code-generation for SOAP Service Reference clients, RESX resources and the pitfalls of the code generated
* How previously, most code generation has been template based using external tooling run outside VS to generate files that need to be manually included in .NET projects to compile
* Introduction of T4 templates in Visual Studio (leading onto .NET Core's dotnet new command line templates)
* Code generation "on-the-fly" in Regular Expressions (intermediate code or compile to MSIL) and Entity Framework (SQL statement generation)
* Latest version of service reference code generation for REST and gRPC in .NET 5

The remainder of the talk will focus on the source generators introduced with .NET 5, covering
* How they differ from traditional template based code generation by being part of the compilation process
* Tooling to help debugging introduced with VS2019 16.10
* Gotchas with the tooling in Visual Studio!
* Unit testing code generation

Lastly, we will look at where source generators may go in the future
* More out of the box use, such as System.Text.Json in .NET 6
* Could there be potential for working with Intellicode and Github Copilot integration?
* "Computer make it so" - Experiments being done in AI generated code without a template or specification

Target audience - Intermediate .NET developers

Session Time : 60 minutes
Preferred Session : Morning session

Previous / scheduled presentations of talk
* DDD East Midlands 2021 (in person) - https://www.youtube.com/watch?v=3IuDAp9xV3w&t=2642s
* DDD Reading 2021 (online)
* South Coast Developers User Group (online)
* .NET Notts - scheduled May 2022 (online)

Examples of other talks that I have presented in person can be seen on You Tube
* .NET Sheffield - https://www.youtube.com/watch?v=kLl2Mt3eYxU&t=613s

Previous Presenting Experience at User Groups / Community Conferences (other talks)
* DDD Reading, DDD North, DDD East Anglia, DDD East Midlands
* .NET Notts, .NET Cambridge, .NET Sheffield, .NET Milton Keynes, .NET Oxford, South Coast Developers

Podcast appearances talking about Dependency Injection
* https://dotnetcore.show/episode-49-configuration-in-net-core-with-steve-collins/
* https://unhandledexceptionpodcast.com/posts/0024-stevecollins/

Other podcast appearances talking about .NET Configuration
* https://dotnetcore.show/episode-49-configuration-in-net-core-with-steve-collins/
* https://www.dnistream.live/show/12-file-configuration-blues

Video Streaming appearances
* https://youtu.be/0x2KW-dJDQU

Hosting User Group
* https://www.meetup.com/Milton-Keynes-NET-Meetup-Group

Steve Collins

Freelance software developer based in the South East of the UK

Worthing, United Kingdom

View Speaker Profile