Hot Reload fonctionne avec de nombreux types de projets existants et à venir tels que WPF, Windows Forms, les Preview .NET MAUI, les applications ASP.NET Core code-behind, les applications console, WinUI 3 (débogueur géré requis) et bien d'autres. Cette prise en charge est très large avec l'expérience de base de tout projet alimenté par les environnements d'exécution .NET Framework ou CoreCLR.
Avec Hot Reload, l'objectif de Microsoft est de rendre cette expérience disponible quelle que soit la manière dont vous préférez lancer votre application. Avec la version d'aujourd'hui, vous pouvez désormais utiliser cette expérience via l'expérience de débogage Visual Studio entièrement intégrée ou l'outil de ligne de commande dotnet watch, avec plus d'options à venir dans les versions ultérieures.
Le plein potentiel sera débloqué dans Visual Studio 2022
Microsoft a expliqué :
« Plus tôt cette année, nous avons annoncé .NET Hot Reload, un projet ambitieux visant à proposer Hot Reload au plus grand nombre de développeurs .NET possible. Nous avons commencé ce voyage avec un premier aperçu disponible dans Visual Studio 2019 et promis beaucoup plus à venir dans Visual Studio 2022 où l'expérience complète serait livrée. Je suis ravi d'utiliser ce billet de blog pour vous tenir au courant de nos progrès vers cet objectif et de toutes les merveilleuses fonctionnalités qui arriveront le 8 novembre 2021 lorsque nous publierons en disponibilité générale.
« Pour tous ceux qui découvrent Hot Reload, voici une introduction rapide. L'expérience Hot Reload dans Visual Studio fonctionne à la fois pour les applications managées .NET et C++ natives (fait amusant, nous n'avions pas prévu à l'origine de prendre en charge C++ dans la première version, mais nous y sommes parvenus !).
« Quel que soit le type d'application sur laquelle vous travaillez, notre objectif avec Hot Reload est de vous économiser autant de redémarrages d'applications que possible entre les modifications, ce qui vous rend plus productif en réduisant le temps que vous passez à attendre que les applications soient reconstruites, redémarrées, re- accédez à l'emplacement précédent où vous étiez dans l'application elle-même, etc. Nous y parvenons en vous permettant de modifier les fichiers de code de vos applications et d'appliquer ces modifications de code immédiatement à l'application en cours d'exécution, également appelée "recharge à chaud" ».
Frameworks et scénarios d'application pris en charge
« Depuis que nous avons annoncé cette fonctionnalité en mai 2021, une question très courante était "Est-ce que Hot Reload fonctionnera avec mon combo d'applications .NET (framework/version)*?", nous avons fait d'énormes progrès pour répondre OUI dans la plupart des situations, ici sont les points forts :
- Lorsque vous utilisez Visual Studio 2022 et démarrez votre application avec le débogueur, l'expérience de base de rechargement à chaud fonctionne avec la plupart des types d'applications .NET et de versions de framework, cela inclut .NET Framework, .NET Core et .NET 5+ (pour C# et VB. NET le cas échéant). Les types d'applications prises en charge incluent le Web (modifications de code), le bureau, le mobile, le cloud et d'autres types de projets. La règle clé ici est que si vous utilisez le débogueur, supposez que Hot Reload est disponible et essayez-le !
- Lorsque vous utilisez Visual Studio 2022 mais que vous n'utilisez pas le débogueur (par exemple, en utilisant CTRL-F5 pour démarrer l'application), le rechargement à chaud est désormais disponible même sans le débogueur lors du ciblage de la plupart des types d'applications .NET 6. Cela signifie que les applications ne ciblant pas .NET 6 (.NET 5 ou inférieur) ne prendront pas en charge le scénario «*pas de débogueur*» et doivent utiliser le débogueur pour obtenir la prise en charge du rechargement à chaud.
- Lorsque vous utilisez Visual Studio 2022 avec une application .NET 6, la plupart des types de scénarios sont pris en charge. Cela ne se limite pas simplement au scénario « sans débogueur » mentionné ci-dessus, il inclut également la prise en charge des types de projets tels que .NET MAUI et Blazor et plus généralement l'édition des fichiers Razor et CSS Hot Reload dans les applications ASP.NET. Il inclut également d'autres optimisations mineures dans des frameworks d'applications supplémentaires. L'utilisation à la fois de Visual Studio 2022 et la mise à jour de vos applications vers .NET 6 vous offriront définitivement l'expérience de rechargement à chaud la plus puissante et nous espérons que vous l'essayerez.
Visual Studio 2022 lors de l'utilisation du débogueur
Lors de l'utilisation de Visual Studio 2022 et du démarrage de l'application avec le débogueur, Hot Reload fonctionne avec la plupart des frameworks d'applications, y compris les types d'applications typiques tels que Console, Windows Forms (WinForms), WPF, UWP, WinUI 3 et la plupart des types de sites Web ASP.NET projets (pour les modifications de code-behind), y compris ASP.NET MVC, Web API et même des projets Web Forms plus anciens. WinUI 3 utilise par défaut le débogage en mode mixte qui ne prend pas en charge le rechargement à chaud. Vous pouvez modifier cela dans les paramètres du projet en activant le débogueur géré qui permettra au rechargement à chaud de fonctionner correctement.
Cette liste n'est également qu'un exemple. La vraie réponse est partout où vous avez .NET et que vous utilisez le débogueur managé Visual Studio, vous devriez obtenir une prise en charge de base du rechargement à chaud.
Cela signifie que même des projets tels que Azure Functions fonctionneront parfaitement dans ce scénario. Microsoft vous encourage à essayer votre combinaison et à l'informer si vous rencontrez des problèmes.
Lors de l'utilisation de Visual Studio 2022 mais sans utiliser le débogueur
Le rechargement à chaud est désormais disponible sans le débogueur lors du ciblage de la plupart des types d'applications .NET 6, y compris les types de projets tels que Console, WPF, Windows Forms (WinForms), ASP.NET Core MVC, Web API et Blazor. Microsoft sait que certains développeurs ont une bonne raison ou une préférence pour démarrer leurs applications sans le débogueur et espère que cette fonctionnalité supplémentaire leur donnera une valeur pour peu ou pas d'impact sur le temps de démarrage.
Cette fonctionnalité est exclusive à .NET 6+ et les applications ne ciblant pas .NET 6 (.NET 5 ou inférieur) ne prendront pas en charge le scénario «*pas de débogueur*» et doivent utiliser le débogueur pour accéder à la fonctionnalité de rechargement à chaud.
Sachez également que tous les types de projets ne seront pas pris en charge pour le scénario «*pas de débogueur*» dans la première version. Spécifiquement:
- Les applications .NET MAUI et WinUI 3 continueront de fonctionner uniquement avec le rechargement à chaud lors de l'utilisation du débogueur. Microsoft espère améliorer cette situation dans une future version, mais n'est pas encore en mesure de communiquer un calendrier précis.
- Les applications UWP ne sont pas non plus prises en charge pour le rechargement à chaud sans le débogueur, c'est par conception et il n'y a actuellement aucun plan pour améliorer cela.
Lors de l'utilisation de Visual Studio 2022 avec une application .NET 6, la plupart des types de scénarios sont pris en charge
Les développeurs capables d'utiliser à la fois Visual Studio 2022 et de travailler sur des applications qui ciblent .NET 6 bénéficieront de l'expérience de rechargement à chaud la plus aboutie et la plus performante.
Voici les points saillants de ce qui est pris en charge*:
- Applications .NET MAUI (iOS, Android et WinUI), y compris les applications .NET MAUI standard et .NET MAUI Blazor Hybrid
- Applications Blazor (Serveur et WebAssembly). Dans la version Visual Studio 2022 en disponibilité générale, la prise en charge du rechargement à chaud pour Blazor WebAssembly lors de l'utilisation du débogueur Visual Studio n'est pas encore activée. Vous pouvez toujours obtenir un rechargement à chaud si vous démarrez votre application via Visual Studio sans le débogueur, et Microsoft travaille pour résoudre ce problème dans la prochaine mise à jour de Visual Studio.
- Édition de fichiers Razor dans les sites Web Blazor et ASP.NET Core standard
- Rechargement à chaud CSS
- Possibilité d'obtenir la prise en charge du rechargement à chaud lors de l'exécution d'applications sans le débogueur.
- Les développeurs ciblant .NET 6 continueront à bénéficier d'améliorations supplémentaires dans les futures mises à jour de Visual Studio 2022, la bande de fonctionnalités .NET et les versions majeures. Ce n'est que le début*!
Scénarios non pris en charge
Même dans la version finale, il y aura toujours des scénarios non pris en charge que vous devez connaître :
- Les applications Xamarin.Forms ne prendront pas en charge le rechargement à chaud .NET dans les scénarios iOS et Android. Vous obtiendrez un rechargement à chaud lorsque vous ciblerez une application UWP. C'est par conception, et Microsoft ne prévoie pas d'apporter d'autres améliorations.
- Les applications créées à l'aide de F# ou celles ciblant .NET Native ne prendront pas en charge le rechargement à chaud. (Remarque : XAML Hot Reload continuera d'être disponible et pris en charge pour les clients Xamarin.Forms sur le dernier SDK) Il existe d'autres limitations mineures connues et Microsoft va faire des communications sur certains problèmes et documents GitHub avec plus de détails dans les semaines à venir.
Expérience utilisateur améliorée dans Visual Studio 2022
L'expérience Hot Reload pour les développeurs .NET (et C++) dans Visual Studio 2022 a également subi des améliorations majeures. La barre d'outils a maintenant l'implémentation cible du bouton « Recharge à chaud » avec une apparence améliorée et plus de fonctionnalités.
La première chose que vous remarquerez est le nouveau bouton de style déroulant avec une nouvelle icône. La commande est renommée et passe de «*Appliquer les modifications de code*» à « Rechargement à chaud ».
L'expansion des boutons révèle un accès facile aux fonctionnalités telles que le redémarrage des applications en cours d'exécution, une bascule pour le rechargement à chaud lors de l'enregistrement et un accès rapide au nouveau panneau de paramètres.
Voici plus de détails sur chacune des nouvelles fonctionnalités*:
- Redémarrez facilement les applications*: vous pouvez désormais redémarrer facilement votre application en cours d'exécution si une modification grossière doit être appliquée via une reconstruction, que vous ayez démarré votre application à l'aide du débogueur ou que vous l'ayez démarrée sans le débogueur (NOUVEAU pour les applications .NET 6*!) .
- Rechargement à chaud lors de l'enregistrement*: dans les versions précédentes, vous ne pouviez appliquer les modifications de rechargement à chaud que lors de l'enregistrement dans les projets ASP.NET, pour chaque autre projet, vous deviez cliquer explicitement sur le bouton Rechargement à chaud. Avec des améliorations récentes, il est désormais possible de recharger à chaud pour n'importe quel type de projet en appuyant simplement sur Enregistrer. Cette nouvelle fonctionnalité est facultative et, une fois activée, s'appliquera à toutes vos futures sessions Visual Studio, sauf si vous la désactivez.
- Accès facile aux paramètres*: dans cette version, Microsoft a également ajouté un panneau de paramètres de rechargement à chaud pour vous donner plus de contrôle lorsque le rechargement à chaud est activé/désactivé. Vous pouvez accéder à ces paramètres dans Visual Studio « Options > .NET / C++ Hot Reload » ou via le menu déroulant des boutons Hot Reload en cliquant sur Paramètres.
Microsoft a également ajouté une boîte de dialogue d'édition améliorée qui est disponible lors de l'exécution de votre application sans le débogueur.
Cette nouvelle interface utilisateur comporte de nombreuses améliorations telles que*:
- Une option à l'échelle de la session Visual Studio pour reconstruire et appliquer les modifications à chaque modification de rechargement à chaud. Une fois coché, cela s'applique jusqu'au redémarrage de Visual Studio
- Une commande de reconstruction et d'application de vos modifications de code qui peut être accomplie en un seul clic, au lieu de plusieurs étapes manuelles
- Et un accès facile aux paramètres
- La boîte de dialogue vous permet également de continuer à éditer si vous ne souhaitez pas effectuer d'action automatisée comme cela était possible auparavant.
Il existe une limitation connue, cette nouvelle boîte de dialogue ne sera pas disponible dans la version en disponibilité générale lors de l'utilisation du débogueur, mais le travail sera terminé dans une future mise à jour.
Source : Microsoft
Et vous ?
Que pensez-vous de l'expérience .NET Hot Reload proposée par Visual Studio ?
Qu'est-ce qui pourrait, selon vous, expliquer le fait que l'expérience complète ne soit proposée qu'à partir de Visual Studio 2022 alors qu'elle a été proposée pour la première fois dans Visual Studio 2019 version 16.11 (Preview 1) ?