应用与版本相关的属性

更新:2007 年 11 月

如果您使用的是 .NET Framework 1.1 版及更高版本,可以对托管源代码应用设计时属性,以便正确激活在 Windows 注册表中注册的类型。本主题介绍何时应用 ComCompatibleVersionAttributeTypeLibVersionAttribute 属性。

生成的 GUID 与固定的 GUID

类型库导出程序 (Tlbexp.exe)程序集注册工具 (Regasm.exe)/tlb 选项可以基于导出供 COM 使用的程序集的版本号生成类标识符 (CLSID)。导出的每个新版本程序集所包含的 CLSID 对该程序集版本都是唯一的。COM 应用程序在调用 CoCreateInstance 方法时使用 CLSID 来标识类。

如果新程序集版本与以前的版本不兼容,此行为非常有用。例如,如果从新程序集中移除了一个或多个类型,则旧版本与新版本就不兼容。

说明:

与 CLSID 不同,编程标识符 (ProgID) 不会随程序集的每个新版本而更改。生成不兼容的新程序集时,应应用 ProgIdAttribute 手动更改 ProgID。

但是,许多程序集都与其早期版本兼容,而且这些程序集的开发人员希望应用程序使用最新版本。通过在多个程序集版本间保留相同的 CLSID(使用固定的 GUID),现有 COM 应用程序可以直接使用新版本程序集中的类型,而无须提供旧程序集,也无须重新编译。

ComCompatibleVersionAttribute 强制使当前程序集版本中的所有 CLSID 与早期版本中的 CLSID 相同。有关应用此属性的其他信息,请参见 ComCompatibleVersionAttribute 参考文档。

类型库版本

类型库版本号包括用于生成它的程序集的主版本号和次版本号。而程序集版本号则有四个部分。两个完全不同的程序集版本(1.0.0.0 和 1.2.500.0)自动生成不同的类型库版本(1.0 和 1.2);但导出供 COM 使用时,前后两个紧邻的版本(1.2.0.0 和 1.2.500.0)将生成相同的类型库版本 (1.2)。

使用 TypeLibraryVersionAttribute 可以在托管源代码中显式指定类型库版本号。有关使用此属性的其他信息,请参见 TypeLibVersionAttribute 参考文档。

请参见

概念

从 COM 应用程序进行的运行库初始化

与版本相关的注册表项

配置 COM 应用程序并行执行

COM 组件和并行执行

其他资源

COM 互操作的并行执行