Ho scritto un assembly .net utilizzando C# per eseguire funzioni che verranno utilizzate dal codice gestito e non gestito. Ho un progetto VB6 che ora ha bisogno di utilizzare l'assembly tramite COM.Riferimento all'assembly .NET in VB6 non funzionante
Ho creato il mio .net assembly, assicurandomi che ComVisible sia impostato su true e che sia registrato per l'interoperabilità COM tramite le proprietà del progetto.
public class MyClass
[ComVisible(true)]
public string GetResponse()
{
return "Testing Response"
}
}
Costruisco l'assieme e copio il file in una cartella. TestInterop.dll
Quindi eseguo un file batch per registrare lo strumento di assemblaggio per registrare l'oggetto per COM.
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
regasm "c:\Program Files\TestApp\TestInterop.dll" /tlb:TestInterop.tlb
I aprire una nuova applicazione VB6 e riferimento TestInterop.dll
In VB6 scrivo il seguente codice ed compila.
Dim obj as TestInterop.MyClass
Set obj = new TestInterop.MyClass
Dim strTest as string
strTest = obj.GetRespose()
Quando si esegue il programma, esso errori nella riga obj.GetResponse().
Run-time error' -2147024894 (80070002'):
Automation error
The system cannot find the file specified
Inoltre, l'intellesense non funziona su obj. Ho dovuto digitare il metodo GetResponse
. È normale?
Qualcuno ha idea di cosa potrebbe essere sbagliato o quali passaggi mi sono perso. Grazie!
Ha funzionato come un fascino.Grazie mille! Ho eseguito lo strumento regasm usando il comando/codebase. Il/codebase crea anche il file tlb per te. Grazie a tutti per le vostre risposte. – dretzlaff17