创建新的应用程序或组件时,最好创建 .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 Basic)。 |
![]() |
---|
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置。 |
使用 COM 类模板创建 COM 对象
在**“文件”菜单上,单击“新建项目”**,以打开新的 Windows 应用程序项目。
在**“项目类型”字段下的“新建项目”对话框中,检查是否已选定 Windows。从“模板”列表中选择“类库”,再单击“确定”**。将显示新项目。
从**“项目”菜单中选择“添加新项”。显示“添加新项”**对话框。
从**“模板”列表中选择“COM 类”,然后单击“添加”**。Visual Basic 即会添加新类,并为 COM 互操作配置新项目。
将代码(如属性、方法和事件)添加到 COM 类。
从**“生成”菜单中选择“生成 ClassLibrary1”**。Visual Basic 即会生成程序集,并向操作系统注册 COM 对象。
不使用 COM 类模板创建 COM 对象
可以手动创建一个 COM 类,而不使用 COM 类模板。使用命令行时或想要更好地控制如何定义 COM 对象时,此过程较有帮助。
设置项目以生成 COM 对象
在**“文件”菜单上,单击“新建项目”**,以打开新的 Windows 应用程序项目。
在**“项目类型”字段下的“新建项目”对话框中,检查是否已选定 Windows。从“模板”列表中选择“类库”,再单击“确定”**。将显示新项目。
在**“解决方案资源管理器”中,右击您的项目,然后单击“属性”。将显示“项目设计器”**。
单击**“编译”**选项卡。
选中**“为 COM 互操作注册”**复选框。
在您的类中设置代码以创建 COM 对象
在**“解决方案资源管理器”中,双击“Class1.vb”**,以显示其代码。
将该类重命名为 ComClass1。
将下列常数添加到 ComClass1。它们将存储 COM 对象必须有的全局唯一标识符 (GUID) 常数。
Public Const ClassId As String = "" Public Const InterfaceId As String = "" Public Const EventsId As String = ""
在**“工具”菜单上,单击“创建 Guid”。在“创建 GUID”对话框中,单击“注册表格式”,再单击“复制”。单击“退出”**。
用 GUID 替换 ClassId 的空字符串,移除前导大括号和尾随大括号。例如,如果 Guidgen 提供的 GUID 为 "{2C8B0AEE-02C9-486e-B809-C780A11530FE}",则代码应如下所示。
Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
为 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 组件冲突。
将 ComClass 特性添加到 ComClass1,为类 ID、接口 ID 和事件 ID 指定 GUID,如下面的示例所示:
<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> Public Class ComClass1
COM 类必须具有一个无参数的 Public Sub New() 构造函数,否则该类无法正确注册。向该类中添加一个无参数构造函数:
Public Sub New() MyBase.New() End Sub
将属性、方法和事件添加到该类,并以 End Class 语句结束它。从**“生成”菜单中选择“生成解决方案”**。Visual Basic 即会生成程序集,并向操作系统注册 COM 对象。
说明
其他 Visual Basic 应用程序不能使用您用 Visual Basic 生成的 COM 对象,因为它们不是真正的 COM 对象。尝试将引用添加到此类 COM 对象会引发错误。有关详细信息,请参见 .NET Framework 应用程序中的 COM 互操作性 (Visual Basic)。
请参见
任务
演练:用 COM 对象实现继承 (Visual Basic)