繁体   English   中英

如何在不注册的情况下在dotnet中使用COM

[英]How to use COM in dotnet without registering

我有一个与生物识别机器通信的 COM dll,但需要注册才能在 dot net 项目中使用,请指导我可以以无需在托管服务器上注册 Z06416233FE24C593312E 的方式嵌入或合并到项目中。

你知道这是不是一个 .net.dll 和组件?

虽然它可以创建并用作 com object? 也许这个 COM object 是为说办公室或 VB6 (未管理的 Z0F4137ED1502B5045DZ8B3 系统)使用而编写的

That.dll STILL 可能已经写在 .net 中。

如果是这种情况,那么您不需要使用 CreateObject,实际上也不需要使用 com-interop 来使用 object。

我一直在 .net 中为 Office/Access 和其他 windows 软件编写 + 创建 + 构建 COM 对象。

但是,如果你幸运的话,你可以从你的项目中获取 COM object dll 并仅引用 .net 程序集,然后你就可以参加比赛了。

测试/尝试这样做只需要大约 15 秒。 那么,您是否尝试过从当前项目中引用.dll? (试试看。!!)。

Of course, if vs tells you that it not a valid .net assembly, then it is a COM object written say in c++ or even VB6, and thus is un-managed code.

在这种情况下,是的,您必须使用 com 互操作。

我一直使用从 VBA 和非托管代码系统免费注册的 COM。 (原因当然是部署头痛)。 但是,在这些情况下,我从非托管代码系统(VB6、VBA、办公代码)进行 COM 免费注册。

奇怪的是,我没有做相反的事情。! (这就是你想要做的!!!)。

现在,可以肯定的是,这个 COM object 不是 ActiveX 版本,因为这确实需要注册,或者至少如果不这样做就非常困难。

所以有几种类型的 COM 对象,而术语:

  ActiveX
  OLE
  COM

以上所有内容通常都意味着同样的事情 - COM object 接口用于上述所有内容。 但是,ActiveX 有更多的扩展,因为这往往意味着某种自定义控件,而不仅仅是说您需要使用的一些库代码。

下一个? 您是 100% 确定这是 COM object,还是简单的非托管 dll?

您当然可以从 .net 调用 + 使用 + 消耗 unmanaged.dll 库代码。

(您需要将您的项目从任何 CPU 强制转换为 x86(32 位)或 x64(64 位 - 但如今写入 x64 的 COM 对象并不常见)。

所以,你作为一般规则必须使用

regsvr32.exe - 这是注册 COM object(非托管)

regasm.exe - 这是 .net 之一 - 它从托管代码对象中创建兼容的 COM object。 如果您必须使用此命令进行注册,那么您非常幸运和幸运 - 因为这意味着这是受管理的(.net 代码),并且您实际上不需要注册 .net object WHEN 编写和使用 .net object代码。!!! (您只需要注册非 .net 系统)。

那么,COM object 过去是如何注册的呢?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM