更新:2007 年 11 月
执行任何托管代码之前,宿主必须首先加载并初始化公共语言运行库。由于此时运行库尚未在进程中运行,所有宿主都将用非托管的存根 (stub) 启动。.NET Framework 提供了一组被称为宿主 API 的非托管 API,宿主可以利用它们来启动运行库。有关更多信息,请参见宿主接口。
为将运行库加载到进程中,宿主会调用 CorBindToRuntimeEx 函数 函数。CorBindToRuntimeEx 函数 的原型位于 Windows 软件开发工具包 (SDK) 的 Include 目录的 Mscoree.h 中。宿主使用 CorBindToRuntimeEx 函数 来控制要加载哪个版本的运行库以及基本功能(如垃圾回收和程序集加载)的行为。宿主可以设置下表中所列的值。
值 |
说明 |
---|---|
并行垃圾回收 |
指定垃圾回收是在后台线程上进行还是在运行用户代码的线程上进行。 |
加载程序优化 |
控制是否以非特定于域的方式来加载程序集。如果以非特定于域的方式加载程序集,就能在一个进程的所有应用程序域间共享 JIT 编译的程序集代码和只读运行库数据结构。 有关更多信息,请参见应用程序域和程序集。 |
服务器与工作站 |
指定是加载运行库的工作站内部版本(“wks”)还是服务器内部版本(“svr”)。 |
版本 |
指定将加载到进程中的运行库版本。要加载 1.0 版本,请使用“v1.0.3705”。要加载 1.1 版本,请使用“v1.1.4322”。要加载 2.0 版本,请使用“v2.0.50727”。一个进程只能加载运行库的一个版本。 有关更多信息,请参见并行 (Side-by-Side) 执行 |
CorBindToRuntimeEx 函数 采用了三个附加参数:包含 ICLRRuntimeHost 接口的对象的 CLSID,即 CLSID_CLRRuntimeHost;接口的 IID,即 IID_ICLRRuntimeHost;以及接收 ICLRRuntimeHost 指针的 [out] 参数。
![]() |
---|
对于 1.0 和 1.1 版本,请使用 CLSID_CorRuntimeHost 和 IID_ICorRuntimeHost 来获取 ICorRuntimeHost 接口。 |
使用 ICLRRuntimeHost 来启动运行库,执行托管代码,获取指向 ICLRControl 接口(用于访问由公共语言运行库实现的管理器)的指针,以及注册实现 IHostControl 接口的宿主控件对象。公共语言运行库调用 IHostControl 来确定宿主要实现的管理器。