Prise en charge du rechargement à chaud .NET pour ASP.NET Core
Le rechargement à chaud .NET applique des modifications de code, y compris des modifications des feuilles de style, à une application en cours d’exécution sans redémarrer l’application et sans perdre l’état de l’application. Le rechargement à chaud est pris en charge pour tous les projets ASP.NET Core 6.0 et versions ultérieures.
En règle générale, le code mis à jour est réexécuté pour prendre effet dans les conditions suivantes :
- Certaines logiques de démarrage ne sont exécutées qu’une seule fois :
- Intergiciel, sauf si la mise à jour du code s’effectue vers un délégué d’intergiciel inline.
- Services configurés.
- Création et configuration de routage, sauf si la mise à jour du code s’effectue vers un délégué de gestionnaire de routage (par exemple,
OnInitialized
).
- Dans les applications Blazor, l’infrastructure déclenche automatiquement un rendu de composant Razor.
- Dans les applications MVC et Razor Pages, le rechargement à chaud déclenche automatiquement une actualisation du navigateur.
- La suppression d’un attribut de paramètre de composant Razor n’entraîne pas le renouvellement du rendu du composant. L’application doit être redémarrée.
Pour plus d’informations sur les scénarios pris en charge, consultez Modifications de code prises en charge (C# et Visual Basic).
Blazor WebAssembly
Le rechargement à chaud Blazor WebAssembly prend en charge les modifications de code suivantes :
- Nouveaux types.
- Classes imbriquées.
- La plupart des modifications apportées aux corps de méthode, telles que l’ajout, la suppression et la modification de variables, d’expressions et d’instructions.
- Modifications apportées aux corps des expressions lambda et des fonctions locales.
- Ajout de méthodes statiques et d’instance aux types existants.
- Ajout de champs, d’événements et de propriétés statiques et d’instance aux types existants.
- Ajout de lambdas statiques aux méthodes existantes.
- Ajout de lambdas qui capturent
this
pour les méthodes existantes qui capturaient déjàthis
précédemment.
Notez que lorsqu’un attribut qui définissait précédemment la valeur d’un paramètre de composant est supprimé, le composant est supprimé et réinitialisé pour rétablir le paramètre supprimé à sa valeur par défaut.
Les modifications de code suivantes ne sont pas prises en charge pour les applications Blazor WebAssembly :
- Ajout d’une nouvelle expression d’opérateur
await
ou de mot cléyield
. - Modification des noms des paramètres de méthode.
Le rechargement à chaud Blazor WebAssembly prend en charge les modifications de code suivantes :
- Nouveaux types.
- Classes imbriquées.
- La plupart des modifications apportées aux corps de méthode, telles que l’ajout, la suppression et la modification de variables, d’expressions et d’instructions.
- Modifications apportées aux corps des expressions lambda et des fonctions locales.
- Ajout de méthodes statiques et d’instance aux types existants.
- Ajout de champs statiques aux types existants.
- Ajout de lambdas statiques aux méthodes existantes.
- Ajout de lambdas qui capturent
this
pour les méthodes existantes qui capturaient déjàthis
précédemment.
Notez que lorsqu’un attribut qui définissait précédemment la valeur d’un paramètre de composant est supprimé, le composant est supprimé et réinitialisé pour rétablir le paramètre supprimé à sa valeur par défaut.
Les modifications de code suivantes ne sont pas prises en charge pour les applications Blazor WebAssembly :
- Ajout d’une nouvelle expression d’opérateur
await
ou de mot cléyield
. - Modification des noms des paramètres de méthode.
- Ajout de champs, événements ou propriétés de l’instance (non-
static
).
Le rechargement à chaud Blazor WebAssembly prend en charge les modifications de code suivantes :
- La plupart des modifications apportées aux corps de méthode, telles que l’ajout, la suppression et la modification de variables, d’expressions et d’instructions.
- Modifications apportées aux corps des expressions lambda et des fonctions locales.
Les modifications de code suivantes ne sont pas prises en charge pour les applications Blazor WebAssembly :
- Ajout de nouvelles fonctions lambda ou locales.
- Ajout d’une nouvelle expression d’opérateur
await
ou de mot cléyield
. - Modification des noms des paramètres de méthode.
- Modifications en dehors des corps de méthode.
- Ajout de champs, événements ou propriétés de l’instance (non-
static
).
CLI .NET
Le rechargement à chaud est activé à l’aide de la commande dotnet watch
:
dotnet watch
Pour forcer la regénération et le redémarrage de l’application, utilisez la combinaison de clavier Ctrl+R dans l’interpréteur de commandes.
Lorsqu’une modification de code non prise en charge est effectuée, appelée modification bon applicable, dotnet watch
vous demande si vous souhaitez redémarrer l’application :
- Oui : redémarre l’application.
- Non : ne redémarre pas l’application et laisse l’application en cours d’exécution sans que les modifications soient appliquées.
- Toujours : redémarre l’application en fonction des besoins en cas de modifications non applicables.
- Jamais : ne redémarre pas l’application et évite les invites futures.
Pour désactiver la prise en charge du rechargement à chaud, transmettez l’option --no-hot-reload
à la commande dotnet watch
:
dotnet watch --no-hot-reload
Désactiver le rechargement à chaud
Le paramètre suivant dans Properties/launchSettings.json
désactive le rechargement à chaud :
"hotReloadEnabled" : false
Ressources supplémentaires
Pour plus d’informations, consultez les ressources suivantes dans la documentation de Visual Studio :
- Vidéo YouTube .NET 6 Hot Reload in Visual Studio 2022, VS Code, and NOTEPAD?!?
- Présentation de l’expérience de rechargement à chaud .NET pour la modification du code au moment de l’exécution
- Écrire et déboguer du code en cours d’exécution avec le rechargement à chaud dans Visual Studio
- Mises à jour des éditeurs Blazor et Razor et rechargement à chaud pour ASP.NET
- Exécution de test avec le rechargement à chaud