如何解决TYPE_E_ELEMENTNOTFOUND(0x8002802B)错误加载旧的DLL?

时间:2019-02-12 16:46:33

标签: c# dll vb6-migration regsvr32

我试图在VS2017解决方案中使用旧的VB6制造的DLL,但是其中一个在上周开始失败。

我已经注册了它们(regsvr32),在解决方案中添加了引用,并尝试使用其中的方法。

当我在周五关闭VS2017午休时,一切正常,当我尝试恢复我的工作时,其中一个DLL开始出现异常。

提到的DLL抛出 TYPE_E_ELEMENTNOTFOUND 错误,因为它甚至不存在,并且显然,我无法访问其类内的方法。

这里的位置不是问题(在System32和SysWOW64中尝试使用它,没有运气),它仍然显示

  

无法确定COM参考的依赖性   “ prjPermisos”。找不到元素。 (来自HRESULT的异常:0x8002802B   (TYPE_E_ELEMENTNOTFOUND))

警告(甚至没有错误,但IDE仍然不允许我使用DLL。)

我的代码非常简单:

prjPermisos.clsCarPermisos carPermisos = new prjPermisos.clsCarPermisos();
carPermisos.CargaPermisos(ref oUsuario, ref sError);   //<--"are you missing a using directive or an assembly reference?" error

(使用IDE和手动方式)清洗了解决方案,然后重新构建,构建了解决方案,却一无所获。

我很肯定我在这里错过了一些东西,我只是不知道什么。

非常感谢向正确方向提供的任何帮助或指导。

1 个答案:

答案 0 :(得分:0)

已解决。让我们感谢Murray Foxcroft的想法。

运行并重新编译DLL项目,替换出现故障的dll,一切恢复正常。 -_-