2009-06-07 11 views
6

Supongamos que tengo una aplicación .Net Framework 3.5 SP1/CLR 2.0 que necesita ejecutarse en plataformas x86 y x64. Supongamos también que por cualquier razón, necesito crear programas de instalación x86 y x64 por separado.¿Hay alguna ventaja en compilar un ensamblaje como x64?

Como tengo un instalador específico para x64 de todos modos, ¿sería beneficioso volver a compilar la aplicación como x64 en lugar de apuntar a "AnyCPU"?

El hecho de establecer el destino en x64 ¿cambia algo además de la información del encabezado del ensamblaje generado?

+0

(se eliminó el ensamblaje de etiquetas porque casi todos los mensajes con esa etiqueta son sobre ensamblador, no ensamblados .NET) –

Respuesta

4

Si especifica x64, cambia algunas configuraciones de memoria predeterminadas para el programa, lo que lo hace un poco más eficiente en programas con una gran presión de memoria. Las pilas de subprocesos más grandes se asignan al compilar con x64 (link)

2

Siempre y cuando no sea Ngen 'cualquier ensamblaje, sería mejor dejarlo como "AnyCPU", y dejar que el JIT se dirija a la arquitectura.

1

He encontrado que cuando envuelvo un dll x86 nativo, el ensamblado de envoltura debe compilarse para la plataforma x86; de lo contrario, obtengo una BadImageFormatException arrojada en una máquina x64. Luego es como una bola de nieve, ya que todos los ensambles que hacen referencia a ese ensamblaje también necesitan compilarse para la plataforma x86.

Podría ser que estoy haciendo algo mal, pero esto es lo que he encontrado. Si no estuviera usando dlls nativos, dejaría todos mis ensamblajes como "AnyCPU".

0

No sé mucho sobre los ensamblados .net, pero en general, si usted sabe que un programa solo se ejecutará en arquitecturas x64, al compilarlo en código de máquina x64 obtendrá una mejora en el rendimiento, y lo hará no pierdas nada (siempre que ya sepas que solo se ejecutará en entornos x64).

Cuestiones relacionadas