程序集未在VS10对象浏览器中列出

时间:2011-01-14 16:22:33

标签: .net assemblies regasm gacutil

我有一个VB.Net项目需要使用第三方DLL,其中还有一个互操作程序集。所以我有这样的事情:

Hummingbird.DM.Server.Interop.PCDClient.dll
PCDClient.dll

我尝试在项目中直接添加对interop的引用,但在运行该文件时,我收到了COM未注册的错误。

所以,我尝试按如下方式注册互操作:

gacutil /if "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

regasm "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

即使重新启动VS,组件仍然不可见。

2 个答案:

答案 0 :(得分:1)

您的regasm命令销毁了COM服务器的注册表项。你必须重新安装它。只能在自己的[ComVisible]代码上使用regasm。

除了没有正确安装之外,您可能无法使用该组件的一个原因是您尝试在64位操作系统上运行此组件。该组件是32位,是目前最常见的情况。您需要强制您的应用程序以32位模式运行才能使用它。在VB.NET IDE中,使用Project + Properties,Compile选项卡,向下滚动,Advanced Compile Options,将Target CPU设置为“x86”。

针对此类问题的最终故障排除工具是SysInternals的ProcMon实用程序。它向您展示了COM如何使用HKLM \ Software \ Classes \ CLSID键来搜索要加载的DLL。

答案 1 :(得分:0)

您正在注册互操作,但(如错误消息所示)您尚未注册COM DLL。试试这个:

regsvr32 pdcclient.dll