Creating Code with Code - Introduction to Roslyn
Compilers used to be a black box, they were accepting a bunch of source files as input and were producing an artifact as an output! There were no means of interaction with any of the phases inside the compiler pipeline. However, with Roslyn, The .NET Compiler Platform SDK, it is not the case anymore!