COM 互操作介绍 (Visual Basic)

组件对象模型(COM)允许对象向其他组件和托管应用程序公开其功能。 尽管 COM 对象多年来一直是 Windows 编程的基础,但专为公共语言运行时(CLR)设计的应用程序提供了许多优势。

.NET Framework 应用程序最终会取代用 COM 开发的那些应用程序。 在此之前,你可能必须使用 Visual Studio 使用或创建 COM 对象。 通过与 COM 互操作,或称 COM 互操作性,您可以在逐步过渡到 .NET Framework 的过程中使用现有的 COM 对象。

通过使用 .NET Framework 创建 COM 组件,可以使用无注册 COM 互操作。 这样,便可以控制在计算机上安装了多个版本的 DLL 版本时启用哪个 DLL 版本,并允许最终用户使用 XCOPY 或 FTP 将应用程序复制到其计算机上可以运行它的相应目录。 有关详细信息,请参阅免注册 COM 互操作

托管代码和数据

为 .NET Framework 开发的代码称为 托管代码,包含 CLR 使用的元数据。 .NET Framework 应用程序使用的数据称为 托管数据 ,因为运行时管理与数据相关的任务,例如分配和回收内存和执行类型检查。 默认情况下,Visual Basic .NET 使用托管代码和数据,但可以使用互作程序集访问 COM 对象的非托管代码和数据(本页稍后介绍)。

程序集

程序集是 .NET Framework 应用程序的主要构建基块。 它是一个功能集合,被构建、设定版本并作为一个包含一或多个文件的单一实现单元进行部署。 每个程序集都包含一个程序集清单。

类型库和程序集清单

类型库描述 COM 对象的特征,例如成员名称和数据类型。 程序集清单对 .NET Framework 应用程序执行相同的函数。 其中包括有关以下内容的信息:

  • 程序集标识、版本、区域性和数字签名。

  • 构成程序集实现的文件。

  • 构成程序集的类型和资源。 这包括从中导出的类型和资源。

  • 编译时对其他程序集的依赖。

  • 程序集正常运行所需的权限。

有关程序集和程序集清单的详细信息,请参阅 .NET 中的程序集

导入和导出类型库

Visual Studio 包含一个实用工具 Tlbimp,可用于将类型库中的信息导入到 .NET Framework 应用程序中。 可以使用 Tlbexp 实用工具从程序集生成类型库。

有关 Tlbimp 和 Tlbexp 的信息,请参阅 Tlbimp.exe(类型库导入程序)Tlbexp.exe(类型库导出程序)。

互操作程序集

互作程序集是 .NET Framework 程序集,这些程序集在托管代码和非托管代码之间桥接,将 COM 对象成员映射到等效的 .NET Framework 托管成员。 Visual Basic .NET 创建的互操作程序集处理使用 COM 对象的许多细节,例如互操作封送处理。

互操作封送处理

所有 .NET Framework 应用程序共享一组通用类型,这些类型可实现对象的互作性,而不考虑所使用的编程语言。 COM 对象的参数和返回值有时使用与托管代码中使用的数据类型不同。 互操作封送处理是指在 COM 对象之间移动参数和返回值时将其打包成等效数据类型的过程。 有关详细信息,请参阅互操作封送处理

另请参阅