能否将.NET 5 COM互操作对象与VB6进行连接使用?
.NET Core COM互操作及VB6调用能力解答
首先明确结论:.NET Core 3.0及以上版本 完全支持 向COM公开组件,可实现VB6调用(含事件触发)的需求,你的调研结论是正确的,后续的.NET 5/6/7/8等所有后继版本也都完整保留了该能力,不存在兼容问题。
你上级的认知是早期版本的限制导致的:在.NET Core 3.0正式发布之前,该版本的COM暴露能力确实没有完整落地,如果测试发生在这个时间窗口,就会得出".NET Core不支持"的结论,但该限制早在2019年.NET Core 3.0正式版发布后就已经被解除。
实现VB6可调用的.NET Core COM组件的核心要求如下:
- 项目配置开启COM托管支持:在.csproj项目文件中添加配置
<EnableComHosting>true</EnableComHosting>,同时给需要暴露给COM的类、接口标记[ComVisible(true)]特性 - 事件支持需要显式定义符合COM规范的事件接口,遵循COM连接点协议,.NET Core互操作层会自动完成连接点的注册、事件派发逻辑,实现方式和.NET Framework基本一致
- 编译完成后会生成后缀为
.comhost.dll的专用COM主机文件,使用regsvr32命令注册该文件即可完成COM组件注册,注册完成后VB6可以像调用普通COM组件一样引用、调用方法、绑定事件。
和.NET Framework的实现相比,.NET Core的COM组件不需要依赖GAC,部署时只需把程序集、相关依赖、comhost.dll文件一起打包即可,部署流程更简洁。
内容的提问来源于stack exchange,提问作者Biel
相关产品推荐
相关产品推荐

