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 composantRazor 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 :

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 :