Me estaba dando el mismo error (no podía consumir el objeto .NET del bacalao VB6 heredado en una segunda máquina dev, después de que estaba trabajando en una primera máquina donde originalmente lo escribí). La DLL de .NET compilada y registrada correctamente - Intenté todo tipo de combinaciones - con y sin utilizar la configuración de compilación "Registrar para Interoperabilidad COM" en VS; registro manual a través de regasm.exe y probar esto con y sin el parámetro/codebase; intenté habilitar y suprimir el atributo de nivel de ensamblaje COM Visible (al suprimir, configuré el atributo en la clase que necesito consumir desde COM). Pero nada funcionó, seguí recibiendo el mismo error.
Resulta que actualicé la salida de DLL a .NET 4.5 en la segunda máquina, mientras que originalmente estaba construyendo un ensamblado .NET 2.0. Mi proyecto tenía algunas referencias dirigidas a DLL Interop de terceros que ejecutaban .NET 2.0. Cuando actualicé estas referencias y reconstruí el archivo DLL -o bien- configuré mi proyecto para que se ejecutara en .NET 2.0, mi problema fue resuelto. Cuando uso/codebase (que VS hace automáticamente) encontré que no necesitaba poner mi DLL en el directorio de la aplicación o en \ syswow64. Además, los documentos de MSDN indican que debe usar un SN (nombre seguro) para su ensamblaje cuando usa/codebase, pero descubrí que no es necesario; acaba de recibir una advertencia de la herramienta de línea de comandos regasm.exe.
El punto es que, desde el punto de vista de COM Interop, tenga cuidado con la versión .NET runtime de sus dependencias con respecto al .NET Framework al que se dirige.
Intenté usar regasm en la ruta completa del ensamblado que se encuentra en c: \ temp, pero sigue siendo el mismo error – ingt
Entonces supongo que su mejor opción es iniciar ProcessMonitor - http://technet.microsoft.com /ru-ru/sysinternals/bb896645.aspx - y mira qué archivo exactamente no se encuentra. Podría ser algún ensamblaje dependiente del que no estés al tanto. Una vez que sepas con certeza, será mucho más fácil de resolver. – sharptooth
sharptooth, gracias * muy * mucho por esta respuesta. ¡Salvó mi piel hoy! –