Compartilhar via


Suporte ao .NET Hot Reload para ASP.NET Core

O .NET Hot Reload aplica alterações de código, incluindo alterações em folhas de estilos, a um aplicativo em execução sem reiniciar o aplicativo e sem perder o estado do aplicativo. Há suporte para recarga frequente para todos os ASP.NET Core em projetos .NET 6 ou posteriores.

Geralmente, o código atualizado é executado novamente para entrar em vigor com as seguintes condições:

  • Alguma lógica de inicialização só é executada uma vez:
    • Middleware, a menos que a atualização de código seja para um delegado de middleware embutido.
    • Serviços configurados.
    • Criação e configuração de rota, a menos que a atualização de código seja para um delegado do manipulador de rota (por exemplo, OnInitialized).
  • Em Blazor aplicativos, a estrutura dispara automaticamente o render de um Razor componente.
  • Em aplicativos MVC e Razor Pages, o Hot Reload dispara uma atualização do navegador automaticamente.
  • Remover um atributo de Razorparâmetro de componente não faz com que o componente seja re-renderizado. O aplicativo deve ser reiniciado.

Para obter mais informações sobre cenários com suporte, consulte alterações de código com suporte (C# e Visual Basic).

Blazor WebAssembly

Blazor WebAssembly O Hot Reload dá suporte às seguintes alterações de código:

  • Novos tipos.
  • Classes aninhadas.
  • A maioria das alterações nos corpos de método, como adicionar, remover e editar variáveis, expressões e instruções.
  • Alterações nos corpos de expressões lambda e funções locais.
  • Adicionando métodos estáticos e de instância a tipos existentes.
  • Adicionando campos estáticos e de instância, eventos e propriedades a tipos existentes.
  • Adicionando lambdas estáticas aos métodos existentes.
  • Adicionando lambdas que capturam this a métodos existentes que já capturavam this anteriormente.

Observe que quando um atributo é removido que definiu anteriormente o valor de um parâmetro de componente, o componente é descartado e inicializado novamente para definir o parâmetro removido de volta ao seu valor padrão.

As seguintes alterações de código não têm suporte para Blazor WebAssembly aplicativos:

Blazor WebAssembly O Hot Reload dá suporte às seguintes alterações de código:

  • Novos tipos.
  • Classes aninhadas.
  • A maioria das alterações nos corpos de método, como adicionar, remover e editar variáveis, expressões e instruções.
  • Alterações nos corpos de expressões lambda e funções locais.
  • Adicionando métodos estáticos e de instância a tipos existentes.
  • Adicionando campos estáticos a tipos existentes.
  • Adicionando lambdas estáticas aos métodos existentes.
  • Adicionando lambdas que capturam this a métodos existentes que já capturavam this anteriormente.

Observe que quando um atributo é removido que definiu anteriormente o valor de um parâmetro de componente, o componente é descartado e inicializado novamente para definir o parâmetro removido de volta ao seu valor padrão.

As seguintes alterações de código não têm suporte para Blazor WebAssembly aplicativos:

  • Adicionando um novo await operador ou yield palavra-chave expressão.
  • Alterando os nomes dos parâmetros do método.
  • Adicionando campos, eventos ou propriedades de instância (exceto static).

Blazor WebAssembly O Hot Reload dá suporte às seguintes alterações de código:

  • A maioria das alterações nos corpos de método, como adicionar, remover e editar variáveis, expressões e instruções.
  • Alterações nos corpos de expressões lambda e funções locais.

As seguintes alterações de código não têm suporte para Blazor WebAssembly aplicativos:

  • Adicionando novas lambdas ou funções locais.
  • Adicionando um novo await operador ou yield palavra-chave expressão.
  • Alterando os nomes dos parâmetros do método.
  • Alterações fora das estruturas de métodos.
  • Adicionando campos, eventos ou propriedades de instância (exceto static).

CLI do .NET

Hot Reload é ativada usando o comando dotnet watch.

dotnet watch

Para forçar o aplicativo a recompilar e reiniciar, use a combinação de teclado Ctrl+R no shell de comando.

Quando uma edição de código sem suporte é feita, chamada de edição rude, dotnet watch pergunta se você deseja reiniciar o aplicativo:

  • Sim: reinicia o aplicativo.
  • Não: não reinicia o aplicativo e deixa o aplicativo em execução sem as alterações aplicadas.
  • Sempre: reinicia o aplicativo conforme necessário quando ocorrem edições rudes.
  • Nunca: não reinicia o aplicativo e evita prompts futuros.

Para desabilitar o suporte ao Recarregamento Frequente, passe a opção --no-hot-reload para o dotnet watch comando:

dotnet watch --no-hot-reload

Desabilitar o recarregamento frequente

A seguinte configuração em Properties/launchSettings.json desabilita o Recarregamento Frequente:

"hotReloadEnabled" : false

Recursos adicionais

Para obter mais informações, consulte os seguintes recursos na documentação do Visual Studio: