Ejecución de una aplicación C#de 32 bits en una máquina de 64 bits
.net x86 (6)
¿Cómo obligo a mi aplicación a ejecutarse como 32 bits en una máquina de 64 bits?
El código está escrito en C #.
Haga clic derecho en su proyecto y seleccione propiedades.
En propiedades, selecciona la pestaña de compilación. En el objetivo de la plataforma, seleccione x86.
Presiona Ctrl + Shift + S para guardar todos los archivos, haz clic con el botón derecho en la solución y selecciona "Limpiar" para eliminar los archivos binarios antiguos. Cualquier compilación posterior debería ser de 32 bits
Si va a Configuration Manager en Visual Studio, puede configurar la plataforma en x86 o x64.
Suponiendo que se trata de un Winforms, una aplicación de consola o un servicio de Windows, debe compilar el exe para x86 en lugar de cualquier CPU. Está en el Administrador de configuración.
Formulario de línea de comandos:
corflags application.exe /32BIT+
Así es como lo hice cuando no pudimos cambiar el código existente de Any CPU to x86 debido a una limitación de ClickOnce :
Cree una aplicación ''launcher'' de 32 bits (x86 debe verificarse en las propiedades del proyecto) (aplicación Windows pero no forma):
static void Main(string[] args)
{
// Load the assembly
string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string assemblyName = Path.Combine(directory, "YourAnyCPUApplication.exe");
Assembly assembly = Assembly.LoadFile(assemblyName);
assembly.EntryPoint.Invoke(null, null);
}
Agregue el siguiente código al método principal en el proyecto Any CPU :
if (IntPtr.Size == 4)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// etc...
}
else
{
// Launch application in 32-bit mode
System.Diagnostics.Process.Start(Path.GetDirectoryName(Application.ExecutablePath) + @"/Your32BitApplicationLauncher.exe");
}
Espero que esto ayude :-)
Visual Studio 11 y .NET framwork 4.5 o superior tienen una opción para Any CPU 32-bit preferred
y este fue el predeterminado desde entonces
El código resultante se ejecutará en cualquier plataforma pero en plataformas de 64 bits se ejecuta como procesos de 32 bits