Los procesadores con arquitectura ARM están diseñados por la empresa británica del mismo nombre (ARM Ltd.) y los licencia a diversos fabricantes de procesadores como Qualcom, Samsung o la propia Apple y sus poderosos procesadores de la serie "M".
Tradicionalmente, estos procesadores han estado omnipresentes en dispositivos portátiles como smartphones, tabletas y laptops, así como en sistemas embebidos, gracias a su capacidad para ofrecer un equilibrio ideal entre rendimiento y eficiencia energética. Pero ahora han revolucionado también el panorama de la tecnología de ordenadores de sobremesa, debido a su eficiencia en términos de consumo de energía, generación de calor, costes reducidos y altísima potencia y rendimiento. Los ordenadores de Apple son la mayor prueba de ello.
Microsoft lleva años con el soporte para ARM en el punto de mira para Windows, pero con grandes dificultades ya que la arquitectura es totalmente diferente a la de los procesadores Intel en la que el sistema lleva ejecutándose durante décadas. Llevamos teniendo versiones de Windows para ARM desde hace ya mucho tiempo, pero siempre se han considerado casi "betas", llenas de problemas, inestabilidad y bajo rendimiento. Sin embargo, 2024 fue el año en el que Windows llegó definitivamente a ARM, no solo porque el sistema está plenamente preparado y estable, sino porque apareció el primer hardware potente y serio de verdad para que Windows le pueda plantar cara a Apple en este terreno.
En 2025, se espera que la adopción de PCs con procesadores ARM crezca mucho, impulsada por la necesidad de sistemas más eficientes en términos de energía y costos, así como por las mejoras constantes en el rendimiento y las aplicaciones de inteligencia artificial que brindan estos dispositivos. Todos los desarrolladores y usuarios avanzados que requieran rendimiento saben que el camino pasa por adoptar ARM. Por eso, es cada vez más importante que nuestros desarrollos trabajen en esta arquitectura.
Compilar aplicaciones .NET para ARM con emulación
Quizá no lo sepas, pero Visual Studio admite de forma nativa la creación y depuración de aplicaciones Arm64 en procesadores basados en ARM.
Si construyes tu aplicación con la configuración AnyCPU
, que es la que viene por defecto para la mayoría de los proyectos .NET, tu app se podrá ejecutar sin problemas en un dispositivo ARM64:
Eso sí, utilizando emulación x64. Aunque esto puede parecer un poco raro, este enfoque ha permitido que muchas aplicaciones con dependencias x64 funcionen de manera fiable bajo emulación sin necesidad de realizar cambios adicionales en la construcción o en las dependencias.
De este modo tu aplicación no se beneficiará de las capacidades nativas de las CPU ARM64 y seguramente tendrá un rendimiento reducido y también consumirá más batería. Pero para muchas aplicaciones esto puede ser más que suficiente.
Por supuesto, siempre puedes crear una versión de tu aplicación específica para ARM, tanto desde las propiedades de tu proyecto como desde las capacidades de despliegue o compilación automática:
Pero así solo compilas para este procesador. No tienes la comodidad de un solo ensamblado que funcione en todas las configuraciones.
Compilar aplicaciones .NET nativas para ARM
Para solucionar el problema de que la configuración AnyCPU
no ejecute las apps nativamente en ARM64 y solo use la emulación, a partir de la actualización de 24H2 para Windows 11 se añade una nueva configuración para los archivos de manifiesto de tus aplicaciones .NET. Esta configuración te permite especificar una lista de arquitecturas compatibles (actualmente amd64
o arm64
) para tu app, indicando que debería ejecutarse de forma nativa en esas plataformas. Por ejemplo, si incluyes arm64
en la lista, tu aplicación se ejecutará utilizando el CLR para ARM64 en dispositivos compatibles, incluso si fue construida con la configuración AnyCPU
.
Nota: amd64
no significa que sea para los procesadores AMD. En realidad es lo que se suele llamar también x64, pero su nombre oficial es amd64. Esto es así ya que fue AMD quien introdujo esta arquitectura en 2003 con su procesador Opteron como extensión x32, y luego la adoptaron en Intel también.
Para poder sacarle partido a este ajuste desde la última versión de Visual Studio 2022 (a partir de la versión 17.11 y en Windows 11 24H2 o posterior) lo que tienes que hacer es irte a las propiedades de tu proyecto .NET y dentro de la sección Build
asegúrate de que:
- Está marcada la opción
AnyCPU
- Está desmarcada la opción
Prefer 32-bit
- Está marcada la opción
Prefer Native ARM64
Así:
Con esto, al guardar y regenerar el proyecto (o al desplegarlo de nuevo) la aplicación se ejecutará nativamente en las plataformas habituales pero también en procesadores ARM de 64 bits, sin cambiar nada: ni tu código ni la configuración de compilación. Esto te ayudará a mejorar el rendimiento, la confiabilidad y la duración de la batería de tus aplicaciones y le proporcionará a tus usuarios una mejor experiencia en estas nuevas plataformas de hardware, que sin duda van a ser cada vez más comunes.