En .NET, la opción del compilador 'Platform Target: Any CPU' permite que un ensamblado .NET se ejecute como 64 bit en una máquina x64, y 32 bit en una máquina x86. También es posible obligar a un ensamblaje a ejecutarse como x86 en una máquina x64 utilizando la opción del compilador 'Plataforma objetivo: x86'.Force x86 CLR en un ensamblado .NET 'Any CPU'
¿Es posible ejecutar un ensamblaje con el indicador 'Cualquier CPU', pero determine si debe ejecutarse en el CLR x86 o x64? Normalmente, esta decisión la toma CLR/OS Loader (según entiendo) basada en la bitidez del sistema subyacente.
Estoy tratando de escribir una aplicación C# .NET que pueda interactuar con (leer: introducir código en) otros procesos en ejecución. Los procesos x64 solo pueden inyectarse en otros procesos x64, y lo mismo con x86. Idealmente, me gustaría aprovechar la compilación JIT y la opción Any CPU para permitir que una sola aplicación se use para inyectar en procesos x64 o x86 (en una máquina x64).
La idea es que la aplicación se compilaría como Cualquier CPU. En una máquina x64, se ejecutaría como x64. Si el proceso objetivo es x86, debe reiniciarse, lo que obliga al CLR a ejecutarlo como x86. es posible?
Yeh Soy consciente de que puede forzarlo envolviéndolo en un ensamblaje de iniciador x86, pero me preguntaba si podría forzarlo dinámicamente para ensamblajes compilados de 'Cualquier CPU'. Gracias de todos modos, probablemente volveré a esto si no puedo encontrar nada más. Sería votado pero no lo suficiente. – jeffora
Los procesos son de 64 o 32 bits. Si el ensamblaje se carga en un proceso de 32 bits y está construido como Cualquier CPU, se JITeará como 32 bits, en el proceso de 64 bits se JITeará como 64. ¿Cómo piensa crear el ensamblaje que aloja sus ensamblajes? – jnoss