What steps are involved in a normal implementation of loading a .NET assembly from a file using the CLR hosting API?
The steps are: (1) Call `CLRCreateInstance` to get `ICLRMetaHost`. (2) Use `ICLRMetaHost::GetRuntime` to get a valid `ICLRRuntimeInfo` pointer. (3) Call `ICLRRuntimeInfo::GetInterface` with the desired CLSID (e.g., `CLSID_CLRRuntimeHost`) to obtain the runtime host interface. (4) Call `ICLRRuntimeHost::Start` to initialize the CLR. (5) Use `ExecuteInDefaultAppDomain` to load the assembly from a file path and invoke a static method. The article's sample code demonstrates this process with a simple calculator-launching assembly.
CLRCreateInstanceICLRMetaHostGetRuntimeICLRRuntimeInfoGetInterfaceStartExecuteInDefaultAppDomain