2011-01-14 59 views
0

我有一个需要使用第三方DLL的VB.Net项目,它也有一个互操作程序集。所以,我有这样的事情:未在VS10中列出的程序集对象浏览器

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

我试图将基准直接在项目中的互操作,但上运行我没有登记错误COM文件。

所以,我想注册的互操作如下:

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

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

即使重启后VS,大会仍是不可见的。

回答

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。

+0

所以你说我应该只使用GACUTIL,而不是两者? 我使用“regasm/u ...”注销它,然后我做了“gacutil/if ...”这个就足够了吗? 我的系统是Win XP 32Bit。 – udeleng 2011-01-14 17:20:55

0

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

regsvr32 pdcclient.dll 
相关问题