Stavo ottenendo lo stesso errore (non poteva consumare l'oggetto .NET dal legacy VB6 cod su una seconda macchina di sviluppo, dopo che stava lavorando su una prima macchina in cui l'avevo originariamente scritto). La DLL .NET è stata compilata e registrata correttamente - ho provato tutti i tipi di combinazioni - con e senza l'impostazione di build "Registra per COM Interop" in VS; registrarsi manualmente tramite regasm.exe e provare questo con e senza il parametro/codebase; ho provato sia a abilitare che a sopprimere l'attributo COM Visible level-level (durante la soppressione, ho impostato l'attributo sulla classe che ho bisogno di utilizzare da COM). Ma niente ha funzionato, ho continuato a ricevere lo stesso errore.
Risulta che ho aggiornato l'output DLL su .NET 4.5 sulla seconda macchina, mentre originariamente stava creando un assembly .NET 2.0. Il mio progetto aveva alcuni riferimenti a DLL Interop di terze parti che eseguivano .NET 2.0. Quando ho aggiornato questi riferimenti e ho ricreato la DLL -o-- ho ripristinato il mio progetto su .NET 2.0 - il mio problema è stato risolto. Usando/codebase (che VS fa automaticamente) ho scoperto che non avevo bisogno di inserire la mia DLL nella directory dell'applicazione o in \ syswow64. Anche i documenti MSDN indicano che è necessario utilizzare un SN (nome sicuro) per l'assembly quando si utilizza/codebase, ma ho scoperto che non è necessario; riceverai semplicemente un avvertimento dallo strumento da riga di comando regasm.exe.
Il punto è, da un punto di vista di interoperabilità COM, fare attenzione alla versione runtime .NET delle proprie dipendenze rispetto a .NET Framework che si desidera utilizzare.
Ho provato a utilizzare il regasm sul percorso completo dell'assembly che si trova in c: \ temp, ma ancora lo stesso errore – ingt
Quindi immagino che la soluzione migliore sia avviare ProcessMonitor - http://technet.microsoft.com /ru-ru/sysinternals/bb896645.aspx - e guarda quale file non è stato trovato esattamente. Potrebbe essere un assembly dipendente di cui non sei affatto a conoscenza. Una volta che sai per certo che sarà molto più facile da risolvere. – sharptooth
sharptooth, grazie * molto * molto per questa risposta. Ha salvato la mia pelle oggi! –