Résoudre les problèmes de Rechargement à chaud XAML

S’applique à : Visual Studio 2019 et versions ultérieures

Ce guide de résolution des problèmes comprend des instructions détaillées qui doivent résoudre la plupart des problèmes qui empêchent le bon fonctionnement des Rechargement à chaud XAML.

Le Rechargement à chaud XAML est pris en charge pour les applications WPF et UWP. Pour plus d’informations sur la configuration requise pour le système d’exploitation et les outils, consultez Écrire et déboguer du code XAML en cours d’exécution avec Rechargement à chaud XAML.

Si Rechargement à chaud n’est pas disponible

Si vous voyez le message Hot Reload is not available dans la barre d’outils dans l’application lors du débogage de votre application, suivez les instructions décrites dans cet article pour résoudre le problème.

Vérifier que la Rechargement à chaud XAML est activée

La fonctionnalité est activée par défaut dans Visual Studio 2019 et versions ultérieures. Lorsque vous commencez à déboguer votre application, vérifiez que la barre d’outils dans l’application s’affiche, ce qui confirme que le Rechargement à chaud XAML est disponible.

Visual Studio 2019 :

Capture d’écran de la barre d’outils « XAML Rechargement à chaud disponible » dans Visual Studio 2019.

Visual Studio 2022 :

Capture d’écran de la barre d’outils « XAML Rechargement à chaud disponible » dans Visual Studio 2022.

Si vous ne voyez pas la barre d’outils dans l’application, sélectionnezOptions> de débogage>XAML Rechargement à chaud dans la barre de menus de Visual Studio. Ensuite, dans la boîte de dialogue Options, vérifiez que l’option Activer le Rechargement à chaud XAML est sélectionnée.

Capture d’écran de la fenêtre Options de débogage de Visual Studio, avec l’option Activer le Rechargement à chaud XAML mise en évidence.

Vérifiez que vous utilisez Démarrer le débogage plutôt que Attacher au processus

Le Rechargement à chaud XAML nécessite que la variable ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO d’environnement soit définie sur 1 au moment du démarrage de l’application. Visual Studio définit automatiquement la valeur dans le cadre de la commande Déboguer>démarrer le débogage (ou F5). Si vous souhaitez utiliser xaml Rechargement à chaud avec la commande Debug>Attach to Process à la place, définissez la variable d’environnement vous-même.

Remarque

Pour définir une variable d’environnement, utilisez le bouton Démarrer pour rechercher une variable d’environnement et choisissez Modifier les variables d’environnement système. Dans la boîte de dialogue qui s’ouvre, choisissez Variables d’environnement, ajoutez-la en tant que variable utilisateur et définissez la valeur sur 1. Pour propre, supprimez la variable lorsque vous avez terminé le débogage.

Vérifiez que vos propriétés MSBuild sont correctes

Par défaut, les informations sources sont incluses dans une configuration Debug. Il est contrôlé par les propriétés MSBuild dans vos fichiers projet (par exemple , *.csproj). Pour WPF, la propriété est XamlDebuggingInformation, qui doit être définie sur True. Pour UWP, la propriété est DisableXbfLineInfo, qui doit être définie sur False. Par exemple :

WPF:

<XamlDebuggingInformation>True</XamlDebuggingInformation>

UWP:

<DisableXbfLineInfo>False</DisableXbfLineInfo>

Vérifier que vous utilisez le nom de configuration de build correct

Vous devez définir manuellement la propriété MSBuild correcte pour prendre en charge les Rechargement à chaud XAML (voir la section précédente), ou vous devez utiliser le nom de configuration de build par défaut (Débogage). Si vous ne définissez pas correctement la propriété MSBuild, un nom de configuration de build personnalisé ne fonctionnera pas, pas plus qu’une build Release.

Vérifier que votre programme n’est pas en cours d’exécution avec élévation de privilèges

Le Rechargement à chaud XAML n’est pas pris en charge dans les applications qui s’exécutent avec élévation de privilèges/s’exécutent en tant qu’administrateur.

Vérifiez que votre fichier XAML ne contient aucune erreur

Si votre fichier XAML affiche des erreurs dans la liste d’erreurs, le Rechargement à chaud XAML peut ne pas fonctionner.

Activer une recherche plus approfondie pour mettre à jour les références et les styles de ressources dans Visual Studio 2022

La définition de la XAML_HOT_RELOAD_ACCURACY_OVER_PERF variable d’environnement sur 1 permet une recherche plus approfondie pour mettre à jour les références de ressources et les styles dans les applications WPF. N’oubliez pas que certaines applications, telles que celles qui utilisent des boîtes à outils tierces, peuvent rencontrer des retards importants avec les Rechargement à chaud XAML. Lorsqu’un retard se produit, un minuteur de progression Rechargement à chaud s’affiche dans Rédacteur status barre.

Capture d’écran du minuteur de progression Rechargement à chaud XAML dans Visual Studio 2022.

Limitations connues

Voici les limitations connues des Rechargement à chaud XAML. Pour contourner toute limitation que vous rencontrez, arrêtez simplement le débogueur, puis terminez l’opération.

Restriction WPF UWP Notes
Connexion d’événements à des contrôles pendant l’exécution de l’application Non pris en charge Non pris en charge Consultez l’erreur : Échec de l’événement. Dans WPF, vous pouvez référencer un gestionnaire d’événements existant. Dans les applications UWP, le référencement d’un gestionnaire d’événements existant n’est pas pris en charge.
Création d’objets de ressources dans un dictionnaire de ressources, par exemple dans la page/fenêtre ou App.xaml de votre application Pris en charge à partir de Visual Studio 2019 version 16.2 et ultérieures Pris en charge Exemples :
- Ajout d’un SolidColorBrush dans un dictionnaire de ressources pour une utilisation en tant que StaticResource.
Remarque : les ressources statiques, les convertisseurs de style et d’autres éléments écrits dans un dictionnaire de ressources peuvent être appliqués/utilisés lors de l’utilisation de Rechargement à chaud XAML. Seule la création de la ressource n’est pas prise en charge.
- Modification de la propriété du dictionnaire de Source ressources.
Ajout de nouveaux contrôles, classes, fenêtres ou autres fichiers à votre projet pendant l’exécution de l’application Non pris en charge Non pris en charge Aucun
Gestion des packages NuGet (ajout/suppression/mise à jour de packages) Non pris en charge Non pris en charge Aucun
Modification de la liaison de données qui utilise l’extension de balisage {x :Bind} S/O Pris en charge à partir de Visual Studio 2019 Cela nécessite Windows 10 version 1809 (build 10.0.17763) et versions ultérieures. Non pris en charge dans Visual Studio 2017 ou les versions antérieures.
Modification des directives x :Uid S/O Non pris en charge Aucun
Utilisation de plusieurs processus Pris en charge Pris en charge Pris en charge dans Visual Studio 2019 version 16.6 et ultérieures.
Modification des styles dans themes\generic.xaml Non pris en charge Non pris en charge XAML Rechargement à chaud crée de nouveaux styles ; les styles d’origine sont scellés. Les plateformes mettent en cache les styles de generic.xaml une fois qu’ils sont appliqués aux contrôles, ce qui les rend inaccessibles pour le remplacement.

Messages d’erreur

Vous pouvez rencontrer les erreurs suivantes lors de l’utilisation de Rechargement à chaud XAML.

Message d’erreur Description
Vérifier que l’événement a échoué L’erreur indique que vous tentez de relier un événement à l’un de vos contrôles, ce qui n’est pas pris en charge pendant l’exécution de votre application.
Cette modification n’est pas prise en charge par les Rechargement à chaud XAML et ne sera pas appliquée pendant la session de débogage. L’erreur indique que la modification que vous tentez n’est pas prise en charge par Rechargement à chaud XAML. Arrêtez la session de débogage, apportez la modification, puis redémarrez la session de débogage.

Si vous trouvez un scénario non pris en charge que vous souhaitez voir pris en charge, faites-le nous savoir à l’aide de notre option Suggérer une fonctionnalité .