Loading the Common Language Runtime into a Process
Before any managed code can be executed, the host must load and initialize the common language runtime. All hosts start with an unmanaged stub because the runtime is not yet running in the process. The .NET Framework provides a set of unmanaged APIs called the hosting APIs that the host can use to start the runtime. For more information, see.
To load the runtime into a process, a host calls thefunction. The prototype for is located in Mscoree.h in the Include directory of the .NET Framework SDK. The host uses to control which version of the runtime to load and the behavior of basic functions such as garbage collection and assembly loading. A host can set the values listed in the following table.
Concurrent garbage collection
Specifies whether garbage collection is done on background threads or on the threads that run user code.
Controls whether assemblies are loaded in a domain-neutral manner. Loading assemblies in a domain-neutral manner enables JIT-compiled assembly code and read-only runtime data structures to be shared among all application domains within a process.
For more information, see Application Domains and Assemblies.
Server vs. workstation
Specifies whether to load the workstation build ("wks") or the server build ("svr") of the runtime.
Specifies which version of the runtime to load into the process. To load version 1.0, use "v1.0.3705". To load version 1.1, use "v1.1.4322". To load version 2.0, use "v2.0.50727". A process can load only one version of the runtime.
For more information, see Side-by-side Execution
takes three additional parameters: the CLSID of the object that contains the interface, CLSID_CLRRuntimeHost; the IID of the interface, IID_ICLRRuntimeHost; and an [out] parameter that receives the pointer.
For versions 1.0 and 1.1, use CLSID_CorRuntimeHost and IID_ICorRuntimeHost to obtain theinterface.
Useto start the runtime, to execute managed code, to obtain a pointer to the interface that provides access to the managers implemented by the common language runtime, and to register a host control object that implements the interface. The common language runtime calls to determine what managers the host implements.