4

我们正在支持一个老化的 VB6 系统,我们在 .Net 中为其编写了新代码,将代码放入程序集中,然后导出 *.tlb 文件以用于 VB6 代码库。

我的问题是,在我希望运行代码的每台计算机上,我是否必须使用 Regasm 来注册类型库?

我问是因为随着计算机损坏,添加新计算机等,很难跟踪类型库的安装。此外,如果我们更新 .Net 代码,我们需要遍历每台计算机并重新注册类型库。

总而言之,是否可以从 VB6 运行 .Net 代码而无需在运行代码的每台计算机上注册类型库?

谢谢

4

1 回答 1

7

/tlb:filename.tlbRegasm.exe 仅在您使用命令行选项运行时创建类型库。然后在 VB6 项目中使用 Project + References,Browse 按钮​​选择 .tlb 文件。运行 Tlbexp.exe 是另一种获取它的方法,无需注册。您应该更喜欢 IDE 中的“Register for COM interop”选项。但是,您必须运行 VS 提升才能写入注册表。右键单击快捷方式并选择“以管理员身份运行”。

让它出现在 VB6 列表中是一个小小的便利,但很难获得。由 Regasm.exe 调用的标准 .NET 注册代码不会编写所需的“可编程”密钥来让 VB6 自动将组件添加到其列表中。您必须编写一个由 [ComRegisterFunction] 属性修饰的自定义注册函数,该属性写入缺少的键。当您只需单击浏览时,这是不值得的。

另请注意,您不必用户机器上注册类型库。只有 VB6 编译器需要它。您必须注册 [ComVisible] 类,使用安装项目很容易。只需将 DLL 的 Register 属性设置为 vsdrpCOM。

于 2012-05-27T15:13:43.043 回答