vs10对象浏览器中未列出的汇编
-
11-10-2019 - |
题
我有一个VB.NET项目,它需要使用第三方DLL,其中还需要一个Interop组件。所以我有这样的东西:
Hummingbird.DM.Server.Interop.PCDClient.dll
PCDClient.dll
我尝试直接在项目中直接添加对Interop的引用,但是在运行文件时,我收到了一个未注册的错误。
因此,我尝试按照以下方式注册Interop:
gacutil /if "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"
regasm "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"
即使在重新启动VS之后,组件仍然看不到。
解决方案
您的regasm命令破坏了COM服务器的注册表键。您必须重新安装它。仅使用您自己的[可粘式]代码使用regasm。
您可能会使用该组件遇到麻烦的一个原因,除了没有正确安装的组件之外,您正在尝试在64位操作系统上运行它。该组件为32位,是迄今为止最常见的情况。您需要强迫您的应用程序以32位模式运行,以便能够使用它。在VB.NET IDE中,使用项目 +属性,编译选项卡,向下滚动,高级编译选项,将目标CPU设置为“ x86”。
诸如此类问题的最终故障排除工具是Sysinternals的Procmon实用程序。它向您展示了COM如何使用HKLM Software Class CLSID键来搜索加载DLL。
其他提示
您正在注册Interop,但是(如错误消息所建议)您尚未注册COM DLL。尝试这个:
regsvr32 pdcclient.dll
不隶属于 StackOverflow