从 COM 应用程序进行的运行时初始化
必须先将公共语言运行时载入内存,COM 应用程序才能激活托管类型。 虽然 COM 互操作并不实际加载运行时(而是由运行时启动代码加载),但 COM 应用程序可以指定一个特定的目标运行时版本。
运行时版本由以下因素确定:
COM 应用程序可以在应用程序配置文件中指定运行时版本。 有关更多信息,请参见配置 COM 应用程序并行执行。
运行时可能已由一个可扩展主应用程序(例如,Microsoft Internet Explorer 或 Microsoft Office)载入内存。 COM 应用程序插件使用为主应用程序加载的运行时来运行托管组件。
如果需要严格控制,COM 应用程序可以通过在程序代码中调用 ICLRMetaHostPolicy::GetRequestedRuntime 方法(从 mscoree.dll 中导出)预加载一个特定版本的运行时。 或者,应用程序也可以根据一个激活的 COM 类,通过调用 GetRequestedRuntimeVersionForCLSID 函数(也从 mscoree.dll 中导出)并将返回值传递到 CorBindToRuntimeHost 函数来指定不同的目标运行时版本。
如果没有这些因素,启动代码将根据配置 COM 应用程序并行执行中描述的默认加载行为加载运行时。
类型解析
如果 Windows 注册表中有多个版本的程序集包含要激活的类型,默认情况下,运行时将加载最新的版本。
如果 COM 应用程序有应用程序配置文件,可将绑定重定向到特定版本的程序集中的类型。 有关更多信息,请参见配置 COM 应用程序并行执行。
![]() |
---|
随 .NET Framework 1.0 版安装的组件没有与版本相关的注册表项。对于这些组件,计算机上一个类型只有一个版本可供 COM 使用。 |