Partager via


Prise en charge de la fonctionnalité .NET de rechargement à chaud pour ASP.NET Core

Le rechargement à chaud .NET applique des modifications de code, notamment les modifications apportées aux 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 tout ASP.NET Core dans les projets .NET 6 ou version ultérieure.

En règle générale, le code mis à jour est réexécuté pour prendre effet avec les conditions suivantes :

  • Une seule fois, une logique de démarrage est exécutée :
    • Middleware, sauf si la mise à jour du code est vers un délégué intergiciel en ligne.
    • Services configurés.
    • Création et configuration d’itinéraires, sauf si la mise à jour du code concerne un délégué de gestionnaire de routage (par exemple). OnInitialized
  • Dans Blazor les applications, le framework déclenche automatiquement le rendu d’un Razor composant.
  • Dans les applications MVC et Razor Pages, le rechargement à chaud déclenche automatiquement une actualisation du navigateur.
  • La suppression de l'attribut Razorparamètre de composant n’entraîne pas le rerendu 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

Blazor WebAssembly Le rechargement dynamique prend en charge les modifications de code suivantes :

  • Nouveaux types.
  • Classes imbriquées.
  • La plupart des modifications apportées aux corps de méthode, tels 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 et d’instance, d’événements et de propriétés à des types existants.
  • Ajout d’lambdas statiques à des méthodes existantes.
  • Ajout de lambdas qui capturent this à des méthodes existantes qui capturaient déjà this précédemment.

Notez que lorsqu’un attribut est supprimé qui définit précédemment la valeur d’un paramètre de composant, le composant est supprimé et réinitialisé pour définir le paramètre supprimé sur sa valeur par défaut.

Les modifications de code suivantes ne sont pas prises en charge pour les Blazor WebAssembly applications :

Blazor WebAssembly Le rechargement à chaud prend en charge les modifications de code suivantes :

  • Nouveaux types.
  • Classes imbriquées.
  • La plupart des modifications apportées aux corps de méthode, tels 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 à des types existants.
  • Ajout d’lambdas statiques à des méthodes existantes.
  • Ajout de lambdas qui capturent this à des méthodes existantes qui capturent déjà this précédemment.

Notez que lorsqu’un attribut est supprimé qui définit précédemment la valeur d’un paramètre de composant, le composant est supprimé et réinitialisé pour définir le paramètre supprimé sur sa valeur par défaut.

Les modifications de code suivantes ne sont pas prises en charge pour les Blazor WebAssembly applications :

  • Ajout d’un nouvel await opérateur ou d'une expression yield avec mot-clé.
  • Modification des noms des paramètres de méthode.
  • Ajout de champs d’instance (non-static), d’événements ou de propriétés.

Blazor WebAssembly Hot Reload prend en charge les modifications de code suivantes :

  • La plupart des modifications apportées aux corps de méthode, tels 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 Blazor WebAssembly applications :

  • Ajout de nouvelles fonctions lambda ou locales.
  • Ajout d’un nouvel await opérateur ou d’une expression de yield mot-clé.
  • Modification des noms des paramètres de méthode.
  • Modifications en dehors des corps de méthode.
  • Ajout de champs d’instance (non-static), d’événements ou de propriétés.

CLI .NET

Le rechargement à chaud est activé à l’aide de la dotnet watch commande :

dotnet watch

Pour forcer l’application à reconstruire et redémarrer, utilisez la combinaison de touches Ctrl+R dans l’interpréteur de commandes.

Lorsqu’une modification de code non prise en charge est effectuée, appelée modification grossière, 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 les modifications appliquées.
  • Toujours : redémarre l’application si nécessaire lorsque des modifications grossières se produisent.
  • Jamais : ne redémarre pas l’application et évite les invites futures.

Pour désactiver la prise en charge du rechargement à chaud, passez l’option --no-hot-reload à la dotnet watch commande :

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 :