gpt4 book ai didi

c# - 将简单的 C# DLL 转换为 COM 互操作组件

转载 作者:IT王子 更新时间:2023-10-29 03:43:48 25 4
gpt4 key购买 nike

如何将 C# DLL 转换为可由 VB6 应用程序使用的 COM 互操作 DLL?

最佳答案

这是我想在 StackOverflow 中找到但找不到的答案。事实证明,将简单的 C# dll 转换为 COM dll 相当容易。

创建 C# dll

使用 C# 类项目创建解决方案。该类应该有一个用于属性/方法的接口(interface)和一个用于事件的接口(interface)。将 GUID 属性分配给类和接口(interface),如 MSDN - Example COM Class (C# Programming Guide) 中所述.另见:MSDN - How to: Raise Events Handled by a COM Sink .

在项目属性 > 应用程序选项卡 > 程序集信息按钮 > 选中“使程序集 COM 可见”。这使得类 COM 中的所有公共(public)方法都可见。

在项目属性 > 构建选项卡 > 将“平台目标”设置为 x86。

这就是创建 DLL 所需要做的全部工作。要调用 DLL,您需要注册它。

在您的开发机器上注册 DLL

您可以通过以下方式之一注册 DLL:

  • 检查项目属性 > 构建选项卡 >“注册 COM Interop”。这将在您构建 DLL 时自动注册它。
  • 使用 RegAsm 手动注册 DLL。这允许您在您选择的目录中注册 DLL,而不是在构建目录中。这是我使用的方法。

    • 不要检查“项目属性”>“构建”选项卡>“注册 COM Interop”
    • 将DLL复制到你想注册的目录
    • 使用管理员权限打开命令 shell 并键入

      RegAsm.exe -tlb -codebase mydll.dll

      RegAsm.exe 可以在“C:\Windows\Microsoft.NET\Framework\v2.0.50727”中找到,而“mydll.dll”是您的DLL 的名称; tlb 表示“创建类型库”;codebase 表示“将目录位置写入注册表,假设它没有被放置在 GAC 中”。

      RegAsm 将显示一个警告,提示程序集应该是强名称的。你可以忽略它。

      此时,您应该能够在 VB6 中添加对 COM DLL 的引用,使用 Intellisense 查看它,并像运行常规 COM DLL 一样运行它。

使用 InstallShield 安装 DLL

如果您使用 InstallShield 将 DLL 与应用程序的其余部分一起安装,请执行以下操作。

在 InstallShield 中,将一个新组件添加到组件列表中。请记住将组件与功能相关联。将组件属性“.NET COM Interop”设置为"is"。

将 .dll 文件添加到组件的文件部分。不要勾选“Self-Register”属性。右键单击 .dll 文件并选择“设置 key 文件”。

将 .tlb 文件添加到组件的文件部分。检查“自注册”属性。

目标 PC 上需要存在正确版本的 .Net Framework。

就是这样。

关于c# - 将简单的 C# DLL 转换为 COM 互操作组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7092553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com