注释
本文介绍了有关 .NET Framework COM 互操作的指南,该指南使用旧式工具和部署模型,例如 Tlbimp.exe、主互操作程序集、全局程序集缓存以及基于注册表的 COM 注册。 对于新式.NET,请使用 COM 源生成或 ComWrappers API。 有关详细信息,请参阅 COM 互操作。
互作应用程序通常包括一个 .NET 客户端程序集、一个或多个表示不同 COM 类型库的互作程序集和一个或多个已注册的 COM 组件。 Visual Studio和Windows SDK 提供了用于导入和转换类型库到互操作程序集的工具,如将类型库导入为程序集中所述。 可通过两种方法部署互作应用程序:
- 通过使用嵌入式互操作类型:指示编译器将互操作程序集中的类型信息嵌入可执行文件中。 编译器仅嵌入应用程序使用的类型信息。 无需将互作程序集与应用程序一起部署。 这是建议的技术。
- 通过部署互操作程序集:创建对互操作程序集的标准引用。 在这种情况下,互操作程序集必须与应用程序一起部署。 如果使用此方法,并且未使用专用 COM 组件,请始终引用要合并到托管代码中的 COM 组件的作者发布的主互作程序集(PIA)。
如果使用嵌入式互作类型,则部署简单直接。 无需做任何特别的事情。 本文的余下部分介绍了如何与应用程序一起部署互操作程序集的方案。
部署互操作程序集
程序集可以具有强名称。 具有强名称的程序集包括发布者的公钥,它提供一个唯一标识。 发行者可以使用 /keyfile 选项对 类型库导入器(Tlbimp.exe) 生成的程序集进行签名。 可以将签名的程序集安装到全局程序集缓存中。 未签名的程序集必须作为专用程序集安装在用户的计算机上。
私有程序集
若要安装要私下使用的程序集,必须在同一目录结构中安装包含导入的 COM 类型的应用程序可执行文件和互作程序集。 接下来的插图显示了一个未签名的互操作程序集,该程序集将在 Client1.exe 和 Client2.exe中私密使用,它们驻留在单独的应用程序目录中。 此示例中被称为 LOANLib.dll 的互操作程序集被安装了两次。
专用部署的
与应用程序关联的所有 COM 组件都必须安装在 Windows 注册表中。 如果图中的 Client1.exe 和 Client2.exe 安装在不同的计算机上,则必须在这两台计算机上注册 COM 组件。
共享程序集
由多个应用程序共享的程序集应安装在名为全局程序集缓存的集中式存储库中。 .NET 客户端可以访问在全局程序集缓存中签名并安装的互作程序集的相同副本。 有关生成和使用主互作程序集的详细信息,请参阅 主互作程序集。