不能在 COM 客户端中添加引用 COM?

Posted

技术标签:

【中文标题】不能在 COM 客户端中添加引用 COM?【英文标题】:Can not add reference a COM in COM client? 【发布时间】:2011-06-04 14:49:55 【问题描述】:

创建了一个 COM 服务器,我注册了它。

当我尝试在 COM 客户端中添加该 COM 服务器时,我无法添加,并且出现以下错误。

" 不能引用 'COMTest' 被添加

ActiveX 类型库 'c\user\~\Debug\COMTest.tlb' 是 从 .NET 程序集导出并且可以 不作为参考添加。

改为添加对 .NET 的引用“

谁能告诉我是什么错误。我以两种方式注册了 COM,也从 VS 也尝试了命令提示符。

【问题讨论】:

【参考方案1】:

这是一条“你为什么要这样做”的信息。项目+添加引用,浏览选项卡,选择DLL,而不是TLB。因此,您将直接使用 .NET 类,而不是通过 COM 互操作两次。

【讨论】:

IMO 这是一个“为什么这不起作用”的情况。 .NET 程序集可以用作 COM 服务器(“很简单!只需添加 ComVvisible 属性!”),.NET 应用程序可以是 COM 客户端(“nwe 并通过最新更新进行了改进")。这应该是一个警告,而不是一个句号。 ----- 用例:我正在用 .NET 替换本机 COM 组件,但 .NET 客户端需要保持与两者兼容。 .. 这是真的,我可以去浏览。但是我正在学习COM,我无法理解错误!我正在注册 DLL 以及 tlb.... 甚至我也给了 snk 密钥。 @peterchen.... ComVisible(true),我都试过了,可以解释一下错误。 您应该用不同的语言编写客户端代码。 javascript、VBScript、VB6 之类的。支持后期绑定,VB.NET 是一种很好的语言。或者 C# 4 中的 dynamic 关键字。 @peterchen 另一个用例:COM 程序集是 32 位的,而引用程序集是 64 位的。我不能添加对它的引用作为 .NET 程序集,因为虽然这会成功,但它不会运行。【参考方案2】:

我假设您指的是 .tlb。你应该参考.dll,

用regsvr32注册后,你只需要在.net中找到那个dll,在com选项卡中添加引用。更多信息请关注here。

【讨论】:

以上是关于不能在 COM 客户端中添加引用 COM?的主要内容,如果未能解决你的问题,请参考以下文章

COM:我可以查看是不是有对我的一个 COM 对象的进程外引用吗?我可以释放它吗?

在客户订单历史记录中显示最后一个WooCommerce管理订单备注

从 EXE COM 服务器检测客户端进程终止

如何在vb6中注册一个不能用作com互操作的.net DLL?

C#编写用户自定义控件时,引用web的webservice,提示错误

RESTful