I strongly recommend you to build the kernel once and check output assembly file. which should answer lot of your doubts like extra overhead of object loading.
It's not exactly same how you are interpreting. I tried very hard in order to optimize the output code.
For couple of years I contributed to Cosmos and fixed some bugs in MOSA. But my design idea was much different from them. So I decided to start with a new project. And seems like it worked!
Because It is not possible to run C# executable without .NET framework. I had to work on a compiler first. Source: https://github.com/amaneureka/AtomOS/tree/master/src/Compile...
Which works on the top of Microsoft's IL Builder. Then it add compiler stubs to support .NET code and convert code into native x86 assembly. The assembly file is then passed through NAsm and proper linking chain to produce final Kernel ELF binary.
Build.sh produces an ISO image which can be used to boot OS in either virtual machine or on real hardware.