Running C#/.NET code is something we do all the time. But how does the .exe/.dll file produced by the compiler actually get executed? What's going on inside the dotnet[core]/Mono runtime?
In an attempt to answer these questions we'll investigate the contents of a .NET executable file and the things that the runtime needs to have in place in order to execute .NET code. With examples from a very simple interpreted .NET runtime, demonstrating that this may not be as complex as you imagined!
This will be based on the (inefficient, pointless, and obsolete!) DotNetAnywhere runtime that Chris wrote many years ago (you may also recognise the name as it's what Steve Sanderson used for his original Blazor demo)
https://github.com/chrisdunelm/DotNetAnywhere
About Chris Bacon:
Chris is a software engineer, currently at Google, and has been using .NET since C# version 2.