我试图在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和手动)解决方案,重建,构建解决方案,但仍然没有。
我很肯定我在这里缺少一些东西,我只是不知道是什么。
非常感谢任何对正确方向的帮助或指导。
解决了。让我们感谢Murray Foxcroft的想法。
跑了并重新编译了DLL项目,取代了错误的dll,一切都恢复了。 -_-