How does .NET Core differ in terms of internal implementation from .NET Framework in regards to how programs are built and ran? I am aware that regular .NET Framework/C# projects essentially get compiled down to CIL code, distributed, and then compiled at runtime by the JITer, turning them finally into machine code on function-by-function basis (unless the programmer has specified the pre-compiled option). Is this all true for .NET Core applications as well? Are there any major differences?
Things to note:
Yes, I am aware that both of these things are very complicated and I am not expecting the answerer to go into full details explaining every little component.
I've heard of .NET Framework's CLR being called a virtual machine before but I know that is up to debate and have seen such debate in posts such as this one, as is the comparison of CIL to Java's bytecode. These are frivolous arguments and not relevant to the question.
I've found similar questions out there, however, the questions seem to be focused on how .NET Core differs in terms of functionality/usability to us as client programmers. This question has nothing to do with that, but is asking how .NET Core is different from .NET Framework in terms of internal implementation.
Thank you.