- Server 2008 a 64Bit
- Framework .net 3.5 a 64bit
- Applicazione .net che referenzia un componente COM scritto con vb6 (quindi 32bit)
Lancio l'applicazione e va in crash...riprovo a registrare l'OCX su un altro percorso, (lanciando il regsvr32 corretto, quello sotto a SysWOW64) etc...ma quando lancio la mia applicazione persistono ancora errori tipo:
- Error retreiving COM Class factory (0x80040154)
- System.Runtime.InteropServices.COMException (0x80040112)
Allora provo a farlo funzionare con un programma vb6 di test che lo chiama e tutto funziona tranquillamente.
Comincio ad indagare un attimo e mi accorgo che la mia applicazione non viene eseguita a 32 (non vedo *32 nel Task Manager per intenderci)....mmhhhh da quello l'illuminazione:
Nelle impostazioni di compilazione del progetto Visual Studio di default lascia "AnyCPU", ma io dovevo forzare a "x86" (giustamente le chiamate all'oggetto COM devono essere fatte in 32bit visto che era fatto in 32bit):
E' bastato ricompilare il progetto con quella specifica ed è tutto andato a meraviglia...
Anche questo mi ha fatto pensare come il
Principio di Pareto (ovvero la legge dell'80/20) sia sempre applicabile