I have some question which puzzled me for a long time.
- What is the relationship between CLR
and one process created by OS?
- What steps the CLR is loaded when we double-click an “Console Application” or “Windows Forms Application”?
- I found two methods: _CorExeMain() and _CorBindToRuntimeEx(). What’s the role of them?
Please see Hosting the Common Language Runtime, Loading the Common Language Runtime into a Process, _CorExeMain Function, CorBindToRuntimeEx Function.
I think the basic answer is, the CLR must run in a process (host). If you “double-click”, a process is created (initally purely unmanaged) then the CLR is loaded into the process (e.g. with CorBindToRuntimeEx).