I have no idea how this particular engine works, but I'm pretty certain that it does use compilation. Here is the thing: some compilers, along with MSBuild.EXE come with .NET (redistributable) network. And, by the way, it means that Visual Studio is not needed to build projects; a solution with C# and VB.NET projects can be built with MSBuild. Studio itself does not compile those projects. And the presence of those compilers is required by .NET FCL, because it includes Code DOM which allows, in particular, to compile .NET code from source of from code DOM tree, load and execute it during runtime.
And it does not mean self-modification of the program. Self-modifying code is the conception which goes quite far from dominating modern programming paradigms. For more detail, please see:
http://en.wikipedia.org/wiki/Self-modifying_code[
^].
In .NET, in Windows (in Linux, *NIX and a lot more), the code native to these platforms is never modified. The lack of the possibility to modify already loaded code is usually supported by the most CPUs, so it is physically impossible.
Adding some code in the process during runtime is not modification of existing loaded code. This feature can be used to build plug-in architecture where the plug-ins are loaded (preliminary built during the same runtime or not) dynamically during runtime. Unloading of them is specifically difficult though (in .NET), but this problem is solved through unloading of whole Application Domains. If you are interested, I can reference a good number of my past very detailed answers on this topic. Do you need that?
—SA