NET: Como convertir el CLR una app en “AnyCPU” en “32bits”

Os propongo un escenario:

  • Aplicación desarrollada en .NET, hace mucho tiempo, y a decir verdad, con la mitad de los conocimientos que tenemos ahora.
  • Por desgracia, se compiló como “AnyCPU” (lo que se ha demostrado como un error a lo largo del tiempo).
  • Ahora lo lanzas, y te encuentras con un: “Error en microsoft.jet.oledb.4.0”. Tras leer, te das cuenta que esto se arregla recompilando en “x86”
  • … Solo tengo el ejecutable, y unas horas para presentar el programa (música de terror de fondo…)

Bueno, pues hay un trucoquillo para marcar un ejecutable de .NET, compilado en AnyCPU, como un ejecutable x86, ya que realmente, solo hay que cambiar un campo en la cabecera (más o menos). ¿Cómo?, ahora te lo explico:

  • Doy por sentado que tienes el SDK de desarrollo del NET o el Visual Studio en cualquier de sus sabores (con el componente “Developer Tools -> Windows Development Tools -> .NET Development Tools” instalado)
  • Te metes en: “Program Files\Microsoft SDKs\Windows\v6.1\Bin” (ojo el v6.1 es para NET 3.5, para NET 4.x cambiará obviamente) y allí tienes que encontrar un fichero “corflags.exe”.
  • Ejecutas:
    corflags /32bit+ <RutaATuEjecutableANYCPU>

    Y tachán. Ejecutable en 32bits :).

Referencias:

  • http://stackoverflow.com/questions/1507268/force-x86-clr-on-any-cpu-net-assembly
  • http://stackoverflow.com/questions/242304/where-should-i-download-corflags-exe-from

Share

2 Responses to “NET: Como convertir el CLR una app en “AnyCPU” en “32bits””

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Os propongo un escenario: Aplicación desarrollada en .NET, hace mucho tiempo, y a decir verdad, con la mitad de los conocimientos que tenemos ahora. Por desgracia, se compiló como “AnyCPU” (lo que se ha demostrado como ……

  2. Terje dice:

    Hi,

    Sorry for the out-of-context response, I couldn’t find a contact link.

    I saw that you had previously done some work on an OGC SOS .NET implementation. Did anything come of that?

Leave a Response