Freeteo


Pensieri e C#dice di Matteo Raumer

Win 64bit, Build=AnyCPU con componenti COM a 32bit...attenzione

Se posso cerco di usare il meno possibile componenti COM nelle applicazioni .net per principio, ma quando mi è capitato di usarli devo ammettere che non ho avuto particolari problemi...il Framework si arrangia a fare le chiamate corrette e farmi stare tranquillo.

Tuttavia, qualche giorno fa, con un'applicazione di questo tipo che girava su 64bit, mi sono imbattuto in un problema che mi ha fatto perdere tempo, la situazione era la seguente:
- 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 
Categoria: .net
venerdì, 18 giu 2010 Ore. 11.25





  • Views Home Page: 243.191
  • Views Posts: 420.625
  • Views Gallerie: 564.778
  • n° Posts: 163
  • n° Commenti: 148
Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003