Partilhar 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 estilo, a um aplicativo em execução sem reiniciar o aplicativo e sem perder o estado do aplicativo. O Hot Reload é suportado 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:

  • Algumas lógicas de inicialização são executadas apenas 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 rotas, a menos que a atualização de código seja para um delegado do manipulador de rotas (por exemplo, OnInitialized).
  • Em Blazor aplicativos, a estrutura dispara uma Razor renderização de componente automaticamente.
  • Nos aplicativos MVC e Razor Pages, o Hot Reload aciona uma atualização do navegador automaticamente.
  • A remoção de um Razor atributo de parâmetro de componente não faz com que o componente seja reprocessado. O aplicativo deve ser reiniciado.

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

Blazor WebAssembly

Blazor WebAssembly O Hot Reload suporta as seguintes alterações de código:

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

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

As seguintes alterações de código não são suportadas para Blazor WebAssembly aplicações:

Blazor WebAssembly O Hot Reload suporta as seguintes alterações de código:

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

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

As seguintes alterações de código não são suportadas para Blazor WebAssembly aplicações:

Blazor WebAssembly O Hot Reload suporta as seguintes alterações de código:

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

As seguintes alterações de código não são suportadas para Blazor WebAssembly aplicações:

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

CLI de .NET

Hot Reload é ativado usando o dotnet watch comando:

dotnet watch

Para forçar a aplicação a reconstruir e reiniciar, use a combinação de teclado Ctrl+R na linha de comandos.

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 a aplicação conforme necessário quando ocorrem edições impróprias.
  • Nunca: não reinicia o aplicativo e evita solicitações futuras.

Para desativar o suporte para Hot Reload, passe a --no-hot-reload opção para o dotnet watch comando:

dotnet watch --no-hot-reload

Desativar Hot Reload

A seguinte configuração em Properties/launchSettings.json desativa Hot Reload:

"hotReloadEnabled" : false

Recursos adicionais

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