2009-07-10 22 views
7

Desarrollamos una aplicación C# utilizando .NET Framework 2.0 que funciona bien en computadoras de 32 bits. Pero cuando ejecuto mi aplicación en un entorno de 64 bits, falla.¿Cómo ejecutar una aplicación .NET de 32 bits en un entorno de 64 bits?

Necesito hacer que mi aplicación se ejecute en un entorno de 64 bits.

¿Cómo puedo hacer esto?

+2

Vamos a necesitar bastante más información que eso. ¿Utiliza P/Invoke? ¿Lo has aislado en un área específica de código? –

Respuesta

0

Debería ejecutarse a menos que esté haciendo referencia a bibliotecas que están específicamente disponibles solo para 32 bits (los controladores Jet DB son un ejemplo) o a menos que le haya pedido a su compilador que compile su aplicación a 32 bits solamente.

¿Qué dice el accidente?

+1

Si se le ordena al compilador que compile solo 32 bits, entonces de hecho * debería * funcionar, y de hecho es probablemente una solución aceptable para el problema. – harms

4

En la configuración de compilación para su proyecto, establezca el destino de la plataforma en x86 en lugar de en cualquier CPU. Esto resolverá problemas donde su proyecto tiene dependencias "ocultas" en subsistemas de 32 bits que no están disponibles en 64 bits. Su aplicación se ejecutará entonces en el sistema de 32 bits en Windows de 64 bits.

9

Puede compilarlo para x86 en lugar de cualquier CPU de esa manera se ejecutará contra las bibliotecas de 32 bits en una ventana de 64 bits.

O intercambie las bibliotecas de 32 bits para 64 bits cuando se instale en ventanas de 64 bits. Entre otros algunos dlls Sqlite son específicos para 32/64 bit

+0

+1 ¡Esta solución simple me ahorró tener que soportar construcciones x86 y x64 en paralelo! ¡Ojalá pudiera votar muchas veces! –

1

Me enfrenté al mismo problema. En mi caso, fue suficiente para compilar el ensamblaje principal (.exe) de mi aplicación, especialmente para "x86". Los otros ensambles (.dll) se compilan con "Cualquier CPU".

Nuestra aplicación funciona bien en sistemas de 32 bits y 64 bits.

0

¿Es una aplicación de Windows/ASP.NET?

Si se trata de una aplicación ASP.NET. puede ejecutar solo modos de 32/64 bits al mismo tiempo. Para hacer esto,

Caso 1. necesita Enable32bitApplication en el grupo de aplicaciones en el IIS. Luego reinicie el IIS.

Caso 2. Compruebe la DLL correspondiente en regedit.

Si es basado en Windows, ejecute este comando desde el símbolo de Visual Studio,

CorFlags.exe TheApp.exe /32BIT+ //Enables 32 bit application. 
4

Esto es lo que parece ser una buena solución si usted está buscando para evitar la recompilación. Tenga en cuenta que requiere un cambio en cada máquina objetivo.

Si usted tiene una máquina de 64 bits y desea ejecutar una aplicación .NET que sólo funciona con el CLR de 32 bits que tendría que realizar cambios en el marco .NET en su máquina

Conjunto el .NET Framework para cargar el CLR en modo WOW a través de este comando

Abran símbolo del sistema y escriba este comando

C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Ldr64.exe SetWow

Ahora debería poder ejecutar aplicaciones que usen solo .NET 32 bit CLR.

Para volver al valor por defecto de ejecución marco 64 bit

C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Ldr64.exe Set64

(source)

2

Simplemente expandiendo la respuesta anterior de Fredrik Leijon, creo que esto es lo que buscas.

Dirá a las ventanas de 64 y 32 bits para ejecutar su aplicación en el entorno de 32 bits.

Recuerde hacer lo mismo para su configuración 'Release'.

enter image description here

Esto a su vez actualizar su archivo .csproj * para MSBuild para recoger la siguiente manera (marque el elemento <PlatformTarget/> abajo):

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
<OutputPath>bin\Debug\</OutputPath> 
<ErrorReport>prompt</ErrorReport> 
<WarningLevel>4</WarningLevel> 
<PlatformTarget>x86</PlatformTarget> 
</PropertyGroup> 
Cuestiones relacionadas