RegAsm是什么,它的作用是什么?文件复制到哪里了?

9
我们有一个基于spicIE的IE插件,目的是连接到一些外部设备。
为了连接这些外部设备,另一家公司开发了他们的令牌和DLL。我们需要一些ActiveX和DLL来通过令牌进行认证。
问题在于,我们为IE开发的插件,在最后一步有一个install.bat文件,运行RegAsm并注册DLL,之后插件(或其更改)可在IE中查看。
当从IE运行插件时,我们的代码找不到某些DLL,这些DLL对于认证是必需的(称其为x.dll)。 注册的DLL被复制到哪里?它真的被复制了吗?我需要将x.dll放在我的插件DLL所在的文件夹中。
1个回答

9
简单来说,RegAsm 会将你的 .NET 程序集注册为 COM 可见。根据 MSDN 的解释:一旦一个类被注册,任何 COM 客户端都可以像使用 COM 类一样使用它。这个类只有在程序集安装时注册一次。在实际注册之前,程序集中的类实例不能从 COM 中创建。

如果我理解你的 ActiveX 代码正确,在没有查看你的 ActiveX 代码情况下,你的 ActiveX 依赖于某些 COM DLLs,这就是你要对 .NET DLL 运行 RegAsm 的原因。

运行 RegDllView 查找已注册的详细信息,然后检查是否实例化了实际已注册的对象。

另外,如果你仍然遇到问题,请尝试在 VB6 / Visual Studio 2010 等中实例化对象,或者采用早期绑定等等方式查看是否存在问题。检查实例化时的错误信息。


情况相反,我们需要在托管代码中实例化com/activex组件,而我们的托管代码无法找到com/activex组件。 - ahmad molaie
1
噢,好的。如果这些是经典的COM组件,那么你只需要在它们上面执行regsvr32命令即可。然后,在你的VS .NET项目中,你应该能够在COM选项卡下添加一个引用并实例化它们。在后台方面,VS会为你完成所有繁重的工作,例如类型映射等。 - AshesToAshes
1
此外,只需补充一下,这里有很好的信息:https://dev59.com/_XRB5IYBdhLWcg3wZmdz,这也应该帮助您入门。同样,请尝试实例化它并检查随着您的操作而出现的 HRESULT / catch。 - AshesToAshes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接