我将假设您不是要编写 COM DLL,而是要编写一个完整的项目,该项目调用各种子程序集,例如 VB6 EXE 调用 ActiveX DLL。如果您可以更具体地说明您要做什么,那将对我有更好的帮助。
关于 VB.NET 与 VB6 的几点。
1) 对于仅 .NET 的项目,没有注册。如果 EXE 或 DLL 引用另一个 .NET DLL,则唯一的要求是 DLL 必须存在于父目录中。
2) 您只能通过在 GAC 中注册 .NET 程序集来为 .NET 应用程序进行 COM 样式注册。但是,这样做有几个要求。在 .NET GAC 上进行搜索,它将为您提供有关如何执行此操作的独家新闻。
3) 您可以设置 .NET 程序集以使用 COM,在这种情况下,它将按照 COM 规则运行,包括向 regsvr 注册。
您会发现#2 或#3 仅在极少数情况下出现的.NET 项目。#1 将适用于 90% 的 DLL 程序集。这取决于你的项目。
CreateObject 的一个常见用途是允许插件或可安装库。.NET 通过反射 API 处理这个问题。使用反射 API,您可以查看目录、浏览每个 .NET DLL 并查看它们的内容并根据您找到的内容创建对象。搜索 .NET Reflection 以了解此内容。
如果您的项目只是 .NET,那么我建议您创建一个由主程序集和定义您正在创建的对象的接口的单个子程序集引用的程序集。当您使用反射 API 并确定对象类型时,您可以将其分配给该接口的变量,并使用智能感知和其他辅助工具对其进行正常编码。
如果您有旧的 COM ActiveX 控件或 DLL,.NET 将生成一个将 ActiveX 对象公开给 .NET 的包装类。我会花一些时间学习 .NET 如何做到这一点。我所做的是创建一个虚拟项目并让 .NET 引用我需要的 ActiveX 内容。然后我找到它制作的包装器项目和 DLL,并将它们移动到中心区域。这就是为什么当我使用相同的 ActiveX 东西处理后续项目时,我知道所有包装器在哪里。