演练:使用 Visual Basic 创建 COM 对象

更新:2007 年 11 月

创建新的应用程序或组件时,最好创建 .NET Framework 程序集。但使用 Visual Basic 也易于将 .NET Framework 组件向 COM 公开。这使您可以为需要 COM 组件的早期应用程序套件提供新组件。本演练演示如何使用 Visual Basic 将 .NET Framework 对象作为 COM 对象公开,包括使用和不使用 COM 类模板。

公开 COM 对象的最简单的途径是使用 COM 类模板。COM 类模板创建一个新类,然后配置您的项目以生成作为 COM 对象的类和操作性层并在操作系统注册。

说明:

虽然还可以将用 Visual Basic 创建的类公开为 COM 对象以供非托管代码使用,但它并不是真正的 COM 对象,不能由 Visual Basic 使用。有关更多信息,请参见 .NET Framework 应用程序中的 COM 互操作性

说明:

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请单击“工具”菜单上的“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置

使用 COM 类模板创建 COM 对象

  1. 在“文件”菜单上单击“新建项目”,以打开新的 Windows 应用程序项目。

  2. 在“项目类型”字段下的“新建项目”对话框中,检查是否已选定 Windows。从“模板”列表中选择“类库”,再单击“确定”。将显示新项目。

  3. 从“项目”菜单中选择“添加新项”。显示“添加新项”对话框。

  4. 从“模板”列表中选择“COM 类”,再单击“添加”。Visual Basic 将添加一个新类,并对新项目进行 COM 互操作配置。

  5. 将代码(如属性、方法和事件)添加到 COM 类。

  6. 从“生成”菜单中选择“生成 ClassLibrary1”。Visual Basic 将生成程序集,并向操作系统注册 COM 对象。

不使用 COM 类模板创建 COM 对象

可以手动创建一个 COM 类,而不使用 COM 类模板。使用命令行时或想要更好地控制如何定义 COM 对象时,此过程较有帮助。

设置项目以生成 COM 对象

  1. 在“文件”菜单上单击“新建项目”,以打开新的 Windows 应用程序项目。

  2. 在“项目类型”字段下的“新建项目”对话框中,检查是否已选定 Windows。从“模板”列表中选择“类库”,再单击“确定”。将显示新项目。

  3. 在“解决方案资源管理器”中,右击您的项目,然后单击“属性”。将显示“项目设计器”。

  4. 单击“编译”选项卡。

  5. 选中“为 COM 互操作注册”复选框。

在您的类中设置代码以创建 COM 对象

  1. 在“解决方案资源管理器”中,双击“Class1.vb”,以显示其代码。

  2. 将该类重命名为 ComClass1。

  3. 将下列常数添加到 ComClass1。它们将存储 COM 对象必须有的全局唯一标识符 (GUID) 常数。

    Public Const ClassId As String = ""
    Public Const InterfaceId As String = ""
    Public Const EventsId As String = ""
    
  4. 若要获取全局唯一标识符 (GUID),请启动 Guidgen.exe 以启动 Guidgen 实用工具。从 Guidgen 应用程序提供的格式列表中选择“注册表格式”。单击“新建 GUID”按钮以生成 GUID,再单击“复制”按钮将该 GUID 复制到剪贴板。

  5. 用 GUID 替换 ClassId 的空字符串,移除前导大括号和尾随大括号。例如,如果 Guidgen 提供的 GUID 为 "{2C8B0AEE-02C9-486e-B809-C780A11530FE}",则代码应如下所示。

    Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
    
  6. 为 InterfaceId 和 EventsId 常数重复上面的步骤,如下例所示。

    Public Const InterfaceId As String = "3D8B5BA4-FB8C-5ff8-8468-11BF6BD5CF91"
    Public Const EventsId As String = "2B691787-6ED7-401e-90A4-B3B9C0360E31"
    
    说明:

    请确定 GUID 是新的和唯一的,否则您的 COM 组件可能与其他 COM 组件冲突。

  7. 将 ComClass 属性添加到 ComClass1,为类 ID、接口 ID 和事件 ID 指定 GUID,如下面的示例所示:

    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
    Public Class ComClass1
    
  8. COM 类必须具有一个无参数的 Public Sub New() 构造函数,否则该类无法正确注册。向该类中添加一个无参数构造函数:

    Public Sub New()
        MyBase.New()
    End Sub
    
  9. 将属性、方法和事件添加到该类,并以 End Class 语句结束它。从“生成”菜单中选择“生成解决方案”。Visual Basic 将生成程序集,并向操作系统注册此 COM 对象。

    说明:

    其他 Visual Basic 应用程序不能使用您用 Visual Basic 生成的 COM 对象,因为它们不是真正的 COM 对象。试图将引用添加到此类 COM 对象会引发错误。有关详细信息,请参见 .NET Framework 应用程序中的 COM 互操作性

请参见

任务

演练:用 COM 对象实现继承

互操作性疑难解答

参考

ComClassAttribute 类

#Region 指令

其他资源

COM 互操作

.NET Framework 应用程序中的 COM 互操作性