Partilhar via


Escrever e depurar código em execução com Hot Reload no Visual Studio (C#, Visual Basic, C++)

A partir do Visual Studio 2022, a experiência Hot Reload no Visual Studio funciona para aplicativos .NET gerenciados e C++ nativos. Independentemente do tipo de aplicativo em que você está trabalhando, a intenção do Hot Reload é salvar o maior número possível de reinicializações de aplicativos entre as edições, tornando-o mais produtivo ao reduzir o tempo que você gasta esperando que os aplicativos sejam reconstruídos, reiniciados, renavegados até o local anterior onde você estava no próprio aplicativo, et al.

Melhoramos a produtividade tornando possível que você edite os arquivos de código do seu aplicativo e aplique as alterações de código imediatamente ao aplicativo em execução, também conhecido como Hot Reload. Uma vez que suas alterações são aplicadas, execute novamente seu código executando uma ação no próprio aplicativo (ou através de algum tipo de temporizador, etc.) e veja as alterações imediatamente; Nenhuma pausa do aplicativo através de pontos de interrupção é necessária!

Atualize o código em execução com o Hot Reload

  1. Abra um projeto com base em um tipo de aplicativo suportado. Consulte .NET e C++ aplicativos suportados.

  2. Inicie a aplicação com o depurador anexado utilizando F5 ou, se suportado, , Ctrl+F5.

  3. Abra um arquivo de código e altere o código.

  4. Aplique as alterações de código usando o botão Hot Reload ou pressione ALT+F10.

    Captura de ecrã do botão Hot Reload.

Para ver as alterações na interface do usuário, o código precisa ser executado novamente. Por exemplo, o código associado a um botão precisa ser reexecutado, ou o código que é acionado periodicamente por meio de um temporizador. Como outro exemplo, o ASP.NET Core oferece suporte à atualização automática do navegador devido à funcionalidade MetadataUpdateHandler.

Suporte para aplicativos .NET

  • Ao usar o Visual Studio 2022 e iniciar seu aplicativo com o depurador, a experiência básica do Hot Reload funciona com a maioria dos tipos de aplicativos .NET e versões de estrutura. Esse suporte inclui .NET Framework, .NET Core e .NET 5+ (para C# e Visual Basic, conforme aplicável). A expectativa neste cenário é que, se você estiver usando o depurador, assuma que o Hot Reload está disponível para você e experimente!
  • Ao usar o Visual Studio 2022, mas não usar o do depurador (por exemplo, usando o CTRL-F5 para iniciar o aplicativo), o Hot Reload está disponível ao direcionar a maioria dos tipos de aplicativos .NET 6. Neste cenário, as aplicações que não visam o .NET 6+ (ou seja, destinam-se ao .NET 5 ou inferior) não suportam o cenário "sem depurador" e têm de utilizar o depurador para obter suporte para Hot Reload.
  • Ao usar o Visual Studio 2022 com um aplicativo .NET 6+, a maioria dos cenários é suportada. Esse suporte não está limitado ao novo recurso "sem depurador" mencionado acima. Ele também inclui outros novos recursos, como suporte para recarregamento a quente de projetos Blazor e, mais geralmente, edição de arquivos Razor em qualquer aplicativo ASP.NET Core e CSS Hot Reload. Usar o Visual Studio 2022 e aplicativos destinados ao .NET 6 juntos oferece a experiência de Hot Reload mais poderosa.

A tabela a seguir mostra quais projetos suportam o .NET Hot Reload com o depurador anexado (F5) e sem o depurador anexado (Ctrl+F5), de acordo com a versão mínima do .NET necessária para suporte no Visual Studio 2022 (17.8).

Tipo de aplicação F5 Ctrl+F5 Suporte MetadataUpdateHandler
Consola .NET 6 .NET 6
A executar no Linux/macOS
(Docker e WSL)
.NET 8 .NET 6 .NET 8
Executando no Arm64 .NET 7 .NET 7 .NET 7
WPF .NET 6 .NET 6
WinForms .NET 6 .NET 6
ASP.NET .NET 6 .NET 6
Servidor Blazor .NET 6 .NET 6 .NET 6
Blazor WebAssembly .NET 6 .NET 6 .NET 6
MAUI
(WinUI/Android/iOS)
.NET 6 -- --

Os tipos de edições que você pode fazer com o Hot Reload são determinados pelo tempo de execução e pela versão do compilador, não pelo método usado para iniciar o aplicativo (F5 ou Ctrl+F5).

Nas seções a seguir, fornecemos detalhes adicionais.

Suporte para aplicativos C++

Ao usar o Visual Studio 2022 e iniciar o seu aplicativo com o depurador, pode fazer um recarregamento dinâmico de um aplicativo C++ nativo ao executá-lo sob o depurador (F5) usando o botão Hot Reload. O Hot Reload também é suportado para aplicativos criados usando projetos CMake e OpenFolder.

Para que seu projeto ofereça suporte ao Hot Reload, você precisa do seguinte conjunto de opções:

  • Project > Properties > C/C++ > General >Formato de Informação de Depuração deve ser definido como "Program Database for Edit and Continue /ZI"
  • Projeto > Propriedades > Ligador > Geral >Ativar Ligação Incremental deve ser definido como "Sim /INCREMENTAL"

Para obter as edições suportadas, consulte C++ Supported Code Changes.

Visual Studio 2022 com um aplicativo .NET, ao usar o depurador

Ao usar o Visual Studio 2022 e iniciar o aplicativo com o depurador, o Hot Reload funciona com a maioria das estruturas de aplicativo.

Em qualquer lugar que você tenha o .NET e esteja usando o depurador gerenciado do Visual Studio, você deve obter suporte básico ao Hot Reload. Esse fato significa que até mesmo projetos como o Azure Functions funcionam muito bem nesse cenário.

Observação

Por padrão, alguns projetos usam depuração de modo misto, que não suporta Hot Reload. Você pode modificar esta configuração nas definições do projeto, definindo Project > Properties > Debug > Open debug launch profiles UI > Enable native code debugging para falso.

Visual Studio 2022 com uma aplicação .NET, mas sem usar o depurador

O Hot Reload está disponível sem o depurador quando direcionado à maioria dos tipos de aplicações .NET 6+.

Esse recurso é exclusivo do .NET 6+. Esses aplicativos que não visam o .NET 6+ (ou seja, eles visam o .NET 5 ou inferior) não suportam o cenário "sem depurador" e devem usar o depurador para obter acesso à funcionalidade Hot Reload.

Além disso, nem todos os tipos de projeto suportam atualmente o cenário "sem depurador", consulte Suporte para aplicativos .NET.

Visual Studio 2022 com um aplicativo .NET 6+

Se você usar o Visual Studio 2022 e trabalhar em aplicativos destinados ao .NET 6+, obterá os benefícios da experiência Hot Reload mais polida e capaz.

Suportado neste cenário:

  • Aplicativos Blazor (Server e WebAssembly)
  • Edição de ficheiros Razor em sites Blazor e ASP.NET Core convencionais
  • Recarregamento automático de CSS
  • Carregamento Dinâmico XAML
  • Suporte a Hot Reload ao executar aplicações sem o depurador (conforme descrito anteriormente em mais detalhes)

Se apontar para o .NET 6+, continuará a receber melhorias nas próximas atualizações do Visual Studio 2022, bem como nas faixas de funcionalidades e versões principais do .NET.

Cenários principais de ASP.NET suportados

A experiência básica de Hot Reload é suportada em muitos cenários ASP.NET. O recurso mais amplamente disponível é a capacidade de alterar code-behind e outros arquivos de classe .NET para a maioria dos tipos de aplicativos Web. Esse recurso funciona ao usar o depurador do Visual Studio e está presente em qualquer lugar onde o Hot Reload estava disponível anteriormente. Para obter orientações mais específicas, consulte o suporte do .NET Hot Reload para ASP.NET Core.

Para desenvolvedores ASP.NET Core que visam o .NET 6+, há recursos adicionais não disponíveis para versões inferiores do .NET. Esses recursos incluem:

  • CSHTML: Editando um arquivo CSHTML Razor suporta muitos tipos de edições.
  • pt-PT: Atualização do Browser: A edição de um arquivo Razor atualiza automaticamente no seu navegador as alterações durante a depuração. Anteriormente, esse recurso só estava disponível ao iniciar o aplicativo sem o depurador.
  • CSS Hot Reload: Você pode alterar arquivos CSS enquanto o aplicativo está em execução, e as alterações são aplicadas imediatamente ao aplicativo em execução à medida que você digita.
  • Sem Depurador: Você obtém suporte a Hot Reload ao usar o Visual Studio para iniciar seu aplicativo Web sem o depurador (CTRL-F5).

Alterações .NET suportadas

A experiência do .NET Hot Reload é alimentada pelo do depurador e pelo compilador C# (Roslyn). Roslyn suporta as edições e as alterações de código suportadas (C# e VB). Liste os tipos de edições atualmente suportadas e as potenciais melhorias futuras.

Projetos .NET sem suporte

O Hot Reload não está disponível em algumas configurações de projeto:

  • Se você estiver usando o Visual Studio sem o depurador, o Hot Reload só funcionará para aplicativos .NET destinados ao .NET 6+.
  • Se você estiver usando o depurador do Visual Studio para executar seu aplicativo, mas tiver desabilitado Enable Hot Reload and Edit and Continue when debugging nas configurações, o Hot Reload não é suportado.
  • Não há suporte para configurações de versão ou compilação personalizadas. Seu projeto deve usar a configuração de compilação Debug.
  • Se você estiver visando um projeto F# ou .NET Native.
  • Algumas otimizações de inicialização ou compilação não são suportadas no .NET Hot Reload. Por exemplo, se o perfil de depuração do seu projeto estiver configurado das seguintes maneiras, o .NET Hot Reload não será suportado:
    • O corte está habilitado para o seu projeto. Por exemplo, não há suporte se PublishTrimmed estiver definido como True no arquivo de projeto para o perfil de depuração.
    • ReadyToRun está habilitado para seu projeto. Por exemplo, não há suporte se PublishReadyToRun estiver definido como True no arquivo de projeto para o perfil de depuração.

Consulte Cenários sem suporte para obter mais detalhes.

Configurar Hot Reload

Para ativar, desativar ou configurar o Hot Reload, consulte Configurar Editar e Continuar.

Mensagem de aviso

Se vir a seguinte caixa de diálogo, o Hot Reload não consegue aplicar as edições atuais sem reiniciar. Você pode optar por reconstruir o aplicativo e aplicar alterações (reiniciar) ou continuar editando. Se você reconstruir, todo o estado do aplicativo será perdido. Se você continuar editando, é possível que alterações ou correções adicionais possam fazer com que o Hot Reload funcione novamente.

Captura de ecrã da caixa de diálogo Aplicar alterações

Se você selecionar a opção Sempre reconstruir quando as alterações não puderem ser aplicadas na caixa de diálogo, não verá a caixa de diálogo novamente na sessão atual do Visual Studio e o Visual Studio reconstruirá e recarregará automaticamente em vez de mostrar a caixa de diálogo.

Solução de problemas

É altamente recomendável verificar a janela Hot Reload Output para obter informações de diagnóstico detalhadas sobre a sessão Hot Reload.

Se estiver a usar compressão de resposta no .NET Core, consulte a informação sobre compressão de resposta.