2009-06-12 13 views
11

Si tengo una aplicación .NET compilada "Any CPU", se ejecutará en modo de 64 bits en un sistema operativo de 64 bits.¿Hay alguna manera de forzar que una aplicación compilada de "Cualquier CPU" se ejecute en modo de 32 bits en sistemas operativos de 64 bits?

Pero si, por alguna razón, quiero forzar esta aplicación para que se ejecute en modo de 32 bits. (Como si se compilara usando "x86"). Volver a compilar no es una opción, entonces ¿es posible configurarlo en tiempo de ejecución? ¿Con el archivo .manifest tal vez?

Respuesta

10

Creo que se puede hacer esto con CorFlags.exe

Algo así como:
CorFlags yourassembly.exe/32BIT +

Tenga en cuenta que si el conjunto es fuerte llamado también tendrá que utilizar la opción/fuerza que rompe los nombres fuertes, por lo que tendrá que renunciar al ensamblaje.

+0

Bueno, lamentablemente no es posible. La aplicación en cuestión tiene un nombre fuerte y se distribuye a los usuarios finales (consumidores), y volver a firmar tampoco es realmente una opción. Demasiado. –

+1

Puede configurar el CLR para omitir la verificación de un nombre seguro para un ensamblaje especificado. Usando "sn.exe -Vr assemblyname" (-Vu para volver a habilitar). Obviamente, esto debería ejecutarse en la máquina del cliente. Sin embargo, realmente no recomendaría esto, ya que deshabilitar la verificación de un nombre fuerte básicamente marca un agujero de seguridad en el CLR, cualquier ensamblaje podría copiarse sobre su aplicación y recibiría plena confianza automáticamente (Ver: http://msdn.microsoft.com/en -us/library/k5b5tt23.aspx). Mi recomendación es no meterse con esto, encontrar una manera de hacer una nueva compilación o no hacerlo. –

+0

@Simon P.Stevens, estoy de acuerdo con usted en todos los puntos. Mi esperanza era que podría ser una entrada en el archivo de manifiesto que podría distribuir. Pero ese parece no ser el caso. –

Cuestiones relacionadas