Partager via


Ajoutez la compatibilité Arm à votre application Windows

Les appareils basés sur les bras deviennent de plus en plus populaires en raison de leur nature frugale d’alimentation, d’une durée de vie plus longue de la batterie et d’une puissance de traitement impressionnante. Windows on Arm prend en charge les unités de traitement neuronales (NPU) paramétrées pour les charges de travail IA et Machine Learning de plus en plus populaires.

Ce guide décrit les étapes d’ajout de la prise en charge à vos applications Windows pour les appareils alimentés par les processeurs Arm64. Il fournit également des conseils sur les moyens de résoudre les problèmes potentiels ou les bloqueurs, tels que les dépendances tierces ou les plug-ins, qui peuvent interférer avec la création d’une version Arm64 de votre application.

Émulation sur les appareils Arm pour les applications Windows x86 ou x64

Les versions Arm de Windows 10 incluent la technologie d’émulation qui permet aux applications x86 non modifiées existantes de s’exécuter sur des appareils Arm. Windows 11 étend cette émulation pour exécuter des applications Windows x64 non modifiées sur des appareils Arm.

Bien que la possibilité d’émuler x64 et x86 sur les appareils Arm soit un excellent pas en avant, ce guide vous aide à ajouter la prise en charge native arm afin que votre application puisse tirer parti des gains de performances natifs et des qualités uniques des appareils arm64, notamment :

  • Optimisation de la consommation d’énergie de votre application pour prolonger la durée de vie de la batterie de l’appareil.
  • Optimisation des performances pour le processeur, le GPU et les processeurs neuronaux pour accélérer les flux de travail, notamment en travaillant avec l’IA.

En outre, les pilotes de noyau doivent être compilés en Arm64 natif. Le noyau n’inclut pas d’émulation. Cette limitation affecte principalement les scénarios de virtualisation. Pour les applications qui utilisent des pilotes de périphérique nécessitant un accès direct aux éléments internes du système d’exploitation ou du matériel s’exécutant en mode noyau, plutôt qu’en mode utilisateur, et qui ne sont pas encore mises à jour pour prendre en charge les processeurs Arm64, consultez Building Arm64 Drivers with the WDK.

Remarque

Les applications web progressives (PWA) s’exécutent déjà avec des performances Arm64 natives.

Conditions préalables

Si vous mettez à jour votre application à l’aide d’un appareil arm (compilation native : génération du code pour la même plateforme sur laquelle vous exécutez), vous pouvez utiliser :

  • Présentation de Visual Studio 17.10 – Préversion 1 (février 2024)

  • Visual Studio 2022 v17.4 ou version ultérieure. Il s’agit de la première version en disponibilité générale de Visual Studio qui prend en charge la création et le débogage d’applications Arm64 sur des processeurs Arm. Visual Studio 2022 17.4 et microsoft Visual C++ (MSVC) natifs Arm64 offrent des performances nettement meilleures par rapport aux versions émulées précédentes.

  • (Facultatif) LLVM (Clang) v12+ ou version ultérieure. LLVM 12 ajoute une version binaire officielle hébergée sur Windows sur Arm64, notamment un compilateur Clang, LLD Linker et des bibliothèques runtime de compilateur-rt.

Si vous mettez à jour votre application Windows pour prendre en charge Arm à l’aide d’un appareil intel x64 ou x86 (compilation croisée), vous pouvez utiliser :

Prenez en compte plusieurs facteurs lors du choix entre la compilation croisée ou la compilation native, comme le matériel disponible et la simplicité d’exécution des tests.

Remarque

Le support de GCC, la GNU Compiler Collection est prévu pour un avenir proche.

Étapes pour ajouter la prise en charge native d’Arm64

Pour mettre à jour votre application pour qu’elle s’exécute en mode natif sur les appareils Arm64 :

  1. Ajouter une configuration Arm64 à votre projet dans Visual Studio
  2. Tester et déboguer l’application Arm64 nouvellement créée
  3. Générer et tester votre application sur les appareils Arm

Après avoir vérifié que votre application est optimisée pour les appareils Arm :

  1. mettre à jour votre programme d’installation et publier votre application mise à jour
  2. Planifier les mises à jour en cours

Étape 1 : ajouter une configuration Arm64 à votre projet dans Visual Studio

Pour ajouter une nouvelle plateforme de solution ARM64 avec des cibles de débogage et de mise en production à votre projet d’application x64 ou x86 existant :

  1. Ouvrez votre solution (code de projet) dans Visual Studio (consultez prérequis pour les versions prises en charge).
  2. Dans le menu déroulant « Plateformes de solutions » dans la barre d’outils Standard (ou dans le menu « Générer »), sélectionnez Configuration Manager...
  3. Ouvrez le menu déroulant « Plateforme de solution active » et sélectionnez <Nouveau...>.
  4. Dans le menu déroulant « Tapez ou sélectionnez la nouvelle plateforme », sélectionnez ARM64 et vérifiez que la valeur « Copier les paramètres à partir de » est définie sur x64 avec la case à cocher « Créer de nouvelles plateformes de projet », puis sélectionnez OK.

Félicitations! Vous avez commencé à ajouter la prise en charge ARM à votre application. Ensuite, vérifiez si votre solution Arm64 se compile avec succès.

Si votre solution ne se compile pas avec succès, vous devez résoudre les problèmes qui entraînent cet échec de compilation. La raison la plus probable est qu’une dépendance n’est pas disponible pour ARM64, qui est couverte dans résolution des problèmes ci-dessous.

(Facultatif) : Pour vérifier que le fichier binaire de votre application est généré pour Arm64, ouvrez le répertoire de votre projet dans PowerShell (cliquez avec le bouton droit sur votre projet d’application dans l’Explorateur de solutions Visual Studio, puis sélectionnez Ouvrir dans terminal). Modifiez les répertoires afin que le nouveau répertoire bin\ARM64\Debug ou Release de votre projet soit sélectionné. Entrez la commande : dumpbin /headers .\<appname>.exe (en remplaçant <appname> par le nom de votre application). Faites défiler vers le haut dans les résultats de sortie de votre terminal pour rechercher la section FILE HEADER VALUES et confirmer que la première ligne est AA64 machine (ARM64).

Étape 2 : tester et déboguer l’application Arm64 nouvellement créée

Pour vérifier si votre solution Arm64 est générée correctement après avoir ajouté la plateforme de solution Arm64 à votre projet dans Visual Studio :

  1. Fermez la fenêtre plateforme de solution active.
  2. Modifiez le paramètre de génération de de débogage en Release.
  3. Dans le menu déroulant Build , sélectionnez Reconstruire la solution et attendez que le projet soit regénéré.
  4. Vous recevez une sortie Reconstruction de tous réussie. Si ce n’est pas le cas, consultez la section Résolution des problèmes .

Une fois que les fichiers binaires sont créés pour que votre application prend en charge Arm64, vous souhaitez les tester. Ce test nécessite l’utilisation d’un appareil ou d’une machine virtuelle exécutant Windows sur Arm.

Si vous développez sur un appareil Windows on Arm, vous disposez d’une configuration simple avec le débogage local Visual Studio. Si vous effectuez une compilation croisée (à l’aide d’un appareil qui n’est pas en cours d’exécution sur un processeur Arm), vous souhaitez utiliser le débogage à distance sur un appareil Windows sur Arm ou une machine virtuelle pour activer votre expérience de développement dans Visual Studio lors de l’exécution de l’application Arm64 sur un autre appareil.

Windows sur le matériel Arm ou les machines virtuelles disponibles à des fins de test

Si vous recherchez du matériel à utiliser pour l’intégration continue (CI) et les tests, voici quelques-uns des appareils Windows avec un processeur Arm64 :

Pour obtenir de l’aide sur la configuration d’une machine virtuelle exécutant Windows sur Arm pour prendre en charge l’intégration et le test, consultez Démarrage rapide : Créer une machine virtuelle Windows sur Arm dans le portail Azure.

Étape 3 : Générer et tester votre application sur des appareils Arm

L’ajout d’une passe d’automatisation des tests est une considération importante pour votre stratégie d’intégration continue et de livraison continue (CI/CD). Pour les solutions Arm64 s’exécutant sur Windows, il est important d’exécuter votre suite de tests sur l’architecture Arm64. Cette architecture pourrait être soit Windows sur du matériel Arm, utilisant l'un des appareils Arm mentionnés précédemment, soit une machine virtuelle, en utilisant l’une des machines virtuelles mentionnées précédemment.

La compilation de l’application est plus pratique quand elle est effectuée sur le même ordinateur que les tests, mais dans de nombreux cas, elle n’est pas nécessaire. Au lieu de cela, vous pouvez envisager d’étendre l’infrastructure de build existante pour produire une sortie compilée croisée pour Arm64.

Étape 4 : Mettre à jour votre programme d’installation et publier votre application mise à jour

Si vous publiez sur le Microsoft Store, une fois que vous générez une version Arm64 de votre application en suivant les étapes précédentes, vous pouvez mettre à jour votre package d’application existant dans le Microsoft Store en accédant au tableau de bord de l’Espace partenaires et en ajoutant les fichiers binaires ARM64 nouvellement créés à la soumission.

Si vous ne publiez pas déjà votre application dans le Microsoft Store, vous pouvez suivre les instructions pour créer une soumission d’application selon que vous souhaitez envoyer une application MSI ou EXE, un package MSIX, un PWA ou un module complémentaire d’application.

Si vous générez votre propre programme d’installation, vous devez vous assurer qu’il peut installer correctement votre nouvelle version d’Arm64. La plupart des frameworks d’installation, tels que WiX, Squirrel, InnoSetup, InstallAware, et d’autres prennent en charge Windows sur Arm sans problème.

Si vous proposez le programme d’installation de votre application à partir d’une page web, vous pouvez utiliser User-Agent indicateurs de client pour détecter quand votre client visite à partir d’un appareil Windows sur Arm et lui offrir la version arm native mise à jour de votre application. Contrairement à la chaîne de l’agent utilisateur, User-Agent indicateurs client vous permet de différencier les clients sur Arm des clients sur des appareils x86.

Étape 5 - Planifier les mises à jour en cours

Maintenant que vous publiez une version Arm64 de votre application, vous souhaitez vous assurer qu’elle reste mise à jour de la même façon que d’autres versions de votre application. Conservez les versions et les fonctionnalités alignées sur les architectures pour éviter toute confusion des clients à l’avenir.

Résolution des problèmes

Les problèmes courants qui interfèrent avec ou vous empêchent d’ajouter une version Arm64 de votre application Windows x64 ou x86 existante sont les suivants :

Une dépendance non compilée pour ARM64 vous empêche d’une build réussie

Si vous ne pouvez pas générer votre application en raison d’une dépendance, qu’elle soit interne, d’un tiers ou d’une bibliothèque open source, vous devez mettre à jour cette dépendance pour prendre en charge l’architecture ARM64 ou la supprimer.

  • Pour les dépendances internes, recompilez la dépendance afin de prendre en charge ARM64.

  • Pour les dépendances tierces, demandez au mainteneur de rebâtir la dépendance avec la prise en charge d’ARM64.

  • Pour les dépendances open source, vérifiez vcpkg pour voir si une version plus récente de la dépendance inclut la prise en charge d’ARM64 vers laquelle vous pouvez effectuer la mise à jour. Si aucune mise à jour n’existe, envisagez de contribuer à l’ajout de la prise en charge ARM64 au package vous-même. De nombreux mainteneurs open source apprécient la contribution.

  • L’organisation Linaro travaille avec les entreprises et les communautés open source pour développer des logiciels sur la technologie arm. Vous pouvez déposer une demande auprès de Linaro Service Desk pour aider à mettre à jour la prise en charge des packages pour toutes les dépendances manquantes liées à Windows sur Arm.

  • Utilisez Arm64EC. Les versions arm64EC des dépendances peuvent être utilisées pour reconstruire une application tout en utilisant toujours les versions x64 des dépendances. Tout code x64, y compris le code des dépendances, dans un processus Arm64EC s’exécute sous émulation dans votre application. (Les versions Arm64 des dépendances ne sont pas utilisables dans ce cas.)

  • Supprimez et remplacez la dépendance sur votre projet d’application.

Le code est écrit pour une architecture spécifique autre que Arm64

Votre application s’appuie sur un pilote de noyau

Les pilotes de noyau doivent être générés en Arm64 natif. Le noyau ne fournit aucune émulation. Cette limitation affecte principalement les scénarios de virtualisation. Pour les applications qui utilisent des pilotes de périphérique nécessitant un accès direct aux éléments internes du système d’exploitation ou du matériel s’exécutant en mode noyau (plutôt qu’en mode utilisateur) et qui ne sont pas encore mises à jour pour prendre en charge les processeurs Arm64, voir Building Arm64 Drivers with the WDK.

En outre, les pilotes sur Windows doivent être générés en tant qu’Arm64 et ne peuvent pas être émulés. Pour les applications qui s’appuient sur des pilotes logiciels qui ne sont pas encore mis à jour pour prendre en charge les processeurs Arm64, consultez Building Arm64 Drivers with the WDK.

Chaîne d’outils pour Windows sur Arm

Outre la prise en charge de Visual Studio et LLVM (CLANG) comme partagé dans la section Prérequis de ce guide, les outils et infrastructures suivants sont également pris en charge pour Arm64 :

  • .NET 7
  • .NET 6 (LTS)
  • .NET 5.0.8+
  • .NET Framework 4.8.1
  • clang-cl compile le code C++ pour Windows et peut servir de remplacement pour le compilateur et l’éditeur de liens MSVC. Il utilise toujours les en-têtes et les bibliothèques de MSVC, et il reste compatible ABI avec MSVC.

Ainsi que les cadres tiers, notamment :

Vous avez besoin d’aide ? Tirer parti de notre service App Assure

App Assure Arm Advisory Service est disponible pour aider les développeurs à créer des applications optimisées par Arm. Ce service s’ajoute à notre promesse existante : vos applications s’exécutent sur Windows sur Arm et, si vous rencontrez des problèmes, Microsoft vous aide à les corriger. En savoir plus.

Inscrivez-vous à Windows Arm Advisory Services.