Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining


Enables unmanaged hosts to load the common language runtime into a process. See Hosting the Common Language Runtime for a complete description of the scenarios in which CorBindToRuntimeEx is used.

This method takes a set of parameters that allow a host to:

  • Specify the version of the runtime that will be loaded.
  • Indicate whether the server or workstation build should be loaded.
  • Control whether concurrent garbage collection or non-concurrent garbage collection is done.
  • Control whether assemblies are loaded as domain-neutral.
  • Obtain an interface pointer to ICorRuntimeHost that can be used to set numerous additional options that allow a host to configure an instance of the common language runtime before it is started. ICorRuntimeHost is described in the Hosting Interfaces documentation in the Tool Developers Guide that ships as part of the .NET Framework SDK.


HRESULT CorBindToRuntimeEx(
  LPWSTR pwszVersion,   
  LPWSTR pwszBuildFlavor, 
  DWORD flags,            
  REFCLSID rclsid,      
  REFIID riid,    
  LPVOID* ppv

Header file: Include Mscoree.h.

Library: Link with Mscoree.lib.


pwszVersion [in]
A string describing the version of the common language runtime you want to load.

A version number in the .NET Framework consists of four parts separated by periods: major.minor.build.revision. The string passed as pwszVersion must start with the character "v" followed by the first three parts of the version number. For example,


Some versions of the common language runtime are installed with a policy statement that specifies compatibility with previous versions of the common language runtime. By default, the startup shim evaluates pwszVersion against policy statements and loads the latest version of the runtime that is compatible with the version being requested. A host can force the shim to skip policy evaluation and load exactly the version specified in pwszVersion by passing STARTUP_LOADER_SAFEMODE in the flags parameter. See description of flags below.

If the caller specifies null for pwszVersion, the latest version of the common language runtime is loaded. Passing null gives the host no control over which version of the runtime is loaded. While this may be appropriate in some scenarios, it is strongly recommended that the host supply a specific version to load.

pwszBuildFlavor [in]
A string that specifies whether to load the server or the workstation build of the common language runtime. Valid values are "wks" and "svr". The server build is optimized to take advantage of multiple processors when doing garbage collections, while the workstation build is optimized for client applications running on a single-processor machine.

If pwszBuildFlavor is set to null, the workstation build is loaded. When running on a single-processor machine, the workstation build is always loaded, even if pwszBuildFlavor is set to "svr". However, if "svr" is passed and concurrent garbage collection is specified (see description of the flags parameter below), the server build is loaded. Running concurrent garbage collection on a server build is generally not desirable, but the common language runtime startup shim has no special logic to prevent this configuration.

flags [in]
A set of flags that controls concurrent garbage collection, domain-neutral code, and the behavior of the pwszVersion parameter. The default is single domain if none of the flags is set. The following values are valid:


Specifies that concurrent garbage collection should be used.
Note   If the caller asks for the server build and concurrent garbage collection on a single-processor machine, the workstation build and non-concurrent garbage collection is run instead.


No assemblies are loaded as domain-neutral.


All assemblies are loaded as domain-neutral.


All strong-named assemblies are loaded as domain-neutral.


Specifies that the exact version of the common language runtime passed in pwszVersion will be loaded. The shim does not evaluate policy to determine the latest compatible version.
rclsid [in]
The CLSID of the coclass that implements the interface you are looking for. Supported values are CLSID_CorRuntimeHost or null.
riid [in]
The IID of the interface you are requesting. Supported values for the initial release of the runtime are IID_ICorRuntimeHost or null.
ppv [in]
The returned interface pointer.
© 2015 Microsoft