小编Jas*_*ann的帖子

在Visual Studio中添加VB6引用会导致"类型库导入程序在类型验证期间遇到错误"

我正在将用VB6编写的一个相当大的项目转换为C#.鉴于项目的规模正在移动,它将在18个月的时间内分阶段完成.我遇到了一个问题,即将一个VB6 ActiveX dll的引用添加到.Net项目中.

如果您完全遵循这些步骤,您也应该能够重新创建问题.

我在.Net中编写了一个COM可见的界面:

<ComVisible(True)>
Public Interface ITestInterface
    Property A As String
    Function TestMethod() As String
End Interface
Run Code Online (Sandbox Code Playgroud)

通过在项目属性的"编译"选项卡中选择"注册COM互操作",可以获得TLB文件.

我创建了一个引用此TLB的VB6项目和一个实现暴露接口的类.

Implements ITestInterface

Private mA As String

Public Property Get ITestInterface_A() As String
    ITestInterface_A = mA
End Property

Public Property Let ITestInterface_A(ByVal value As String)
    mA = value
End Property

Public Function ITestInterface_TestMethod() As String
    ITestInterface_TestMethod = "From VB6"
End Function
Run Code Online (Sandbox Code Playgroud)

如果我在VB6中将项目属性的"组件"选项卡设置为使用"远程服务器文件",则在编译时会自动创建TLB.我可以在OleView中查看TLB并查看以下内容(除了在.Net项目中定义的接口的VB6中完成的具体实现的细节):

// typelib filename: TestVB6Interface.dll

[
  uuid(**EF005573-BFC7-436D-A382-F906CA09F94A**),
  version(3.0)
]

// ... some other stuff

// TLib :     // TLib …
Run Code Online (Sandbox Code Playgroud)

c# vb.net vb6 visual-studio-2010 tlbimp

9
推荐指数
1
解决办法
2158
查看次数

标签 统计

c# ×1

tlbimp ×1

vb.net ×1

vb6 ×1

visual-studio-2010 ×1