2

我在尝试注册 COM 程序集时束手无策。我一直在说(相当无益的错误)

由于以下错误,检索具有 CLSID {GuidID} 的组件的 COM 类工厂失败:80040154 未注册类(来自 HRESULT 的异常:0x80040154 (REGDB_E_CLASSNOTREG))。

此程序集是对使用 .NET 4.5 编写的库的引用的一部分。该库是 .NET 4.5 Web 服务中的参考。程序集是 Interop.AssemblyName。我已经验证了 Interop.AssemblyName.dll 存在于 web 服务的 bin 文件夹中。这些项目刚刚使用 VS2012 从 .NET 2.0 升级。

我尝试使用 REGSVR32.exe 注册程序集(失败,没有 DLLEntryPoint)、gacutil.exe(说它安装正确)和 Regasm(32 位和 64 位,都说安装成功)最后,我尝试更改构建输出为“任何 CPU”的“x86”。

上面这些东西都没有做任何事情来解决这个错误。这个愚蠢的程序集在决定运行之前还可能想要注册什么?

4

1 回答 1

0

您正在混淆本机 COM 组件和为其生成的互操作库。缺少的是本机 COM 组件,互操作库在正确注册它方面没有任何作用。互操作库只是为了让 CLR 轻松使用该组件。它不应该注册,Regsvr32.exe 抱怨的原因。

听起来您还没有找到该原生组件,我们也无法帮助您找到它。项目文件中的<COMReference>条目将是帮助您找到它的提示,Guid 元素告诉您使用 Regedit.exe 在注册表中查找的位置。但是需要在机器上安装它才能摆脱这个运行时错误。请联系组件的所有者或供应商以获取安装说明。

请注意,Web 服务通常以 64 位模式运行。旧版 COM 组件几乎总是只有 32 位。您需要在服务器上安装一个 32 位应用程序池以保持兼容。

于 2013-10-17T16:14:22.940 回答