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

发布于 2024-10-12 05:24:38 字数 400 浏览 10 评论 0原文

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

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 后,程序集仍然不可见。

I have a VB.Net project which needs to use a third party DLL for which there also an interop assembly. So I have something like this:

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

I tried adding the reference to the interop directly in the project, but on running the file I got a COM not registered error.

So, I tried registering the interop as follows:

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

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

Even after restarting VS, the assembly is still not visible.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谷夏 2024-10-19 05:24:38

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

除了未正确安装该组件之外,您在使用该组件时可能遇到问题的原因之一是您尝试在 64 位操作系统上运行该组件。该组件是 32 位的,这是迄今为止最常见的情况。您需要强制您的应用程序以 32 位模式运行才能使用它。在 VB.NET IDE 中,通过“项目 + 属性”、“编译”选项卡、向下滚动、“高级编译选项”、将“目标 CPU”设置为“x86”来完成。

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

Your regasm command destroyed the registry keys for the COM server. You'll have to reinstall it. Only use regasm on your own [ComVisible] code.

One reason you may have trouble using the component, beyond it just not having been installed correctly, is because you are trying to run this on a 64-bit operating system. And the component is 32-bit, by far the most common case. You need to force your app to run in 32-bit mode to be able to use it. In the VB.NET IDE, that's done with Project + Properties, Compile tab, scroll down, Advanced Compile Options, set Target CPU to "x86".

The ultimate troubleshooting tool for problems like this is SysInternals' ProcMon utility. It shows you how COM is using the HKLM\Software\Classes\CLSID key to search for the DLL to load.

沫尐诺 2024-10-19 05:24:38

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

regsvr32 pdcclient.dll

You're registering the interop, but (as the error message suggests) you've not registered the COM DLL. Try this:

regsvr32 pdcclient.dll
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文