Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Recarga Dinâmica era conhecida anteriormente como Editar e continuar na documentação do Visual Studio e em alguns textos de IU antigos.
A partir de Visual Studio 2022, a experiência Recarga Dinâmica em Visual Studio funciona para aplicativos C++ .NET gerenciados e nativos. Independentemente do tipo de aplicativo no qual você está trabalhando, a intenção de Recarga Dinâmica é salvar o máximo possível de reinicializações de aplicativo entre edições, tornando-o mais produtivo reduzindo o tempo gasto aguardando que os aplicativos recompilem, reiniciem e naveguem novamente até o local anterior em que você estava no próprio aplicativo.
Melhoramos a produtividade tornando possível editar os arquivos de código do aplicativo e aplicar as alterações de código imediatamente ao aplicativo em execução, também conhecido como Recarga Dinâmica. Depois que suas alterações forem aplicadas, execute novamente seu código executando uma ação no próprio aplicativo (ou por meio de algum tipo de temporizador, etc.) e veja as alterações imediatamente; nenhuma pausa do aplicativo por meio de pontos de interrupção é necessária!
Atualizar o código em execução com Recarga Dinâmica
Abra um projeto com base em um tipo de aplicativo com suporte. Veja .NET e C++ aplicativos suportados.
Inicie o aplicativo com o depurador anexado usando F5 ou, se compatível, Ctrl+F5.
Abra um arquivo de código e altere o código.
Aplique as alterações de código usando o botão Recarga Dinâmica
ou pressione ALT+F10.
Para ver as alterações na interface do usuário, o código precisa ser executado novamente. Por exemplo, o code-behind de um botão deve ser executado novamente ou código que está sendo disparado em um intervalo por meio de um temporizador. Como outro exemplo, ASP.NET Core dá suporte à atualização automática do navegador devido à funcionalidade MetadataUpdateHandler.
Suporte para aplicativos .NET
- Quando se utiliza o Visual Studio 2022 e se inicia o aplicativo com o depurador, a experiência básica de Recarga Dinâmica funciona com a maioria dos tipos de aplicativos .NET e versões do framework. 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, pressuponha que a Recarga Dinâmica está disponível para você e experimente.
- Quando se utiliza o Visual Studio 2022, mas não se usa o depurador (por exemplo, usando CTRL-F5 para iniciar o aplicativo), o Recarga Dinâmica está disponível ao direcionar a maioria dos tipos de aplicativos .NET 6. Nesse cenário, os aplicativos que não se destinam ao .NET 6+ (ou seja, se destinam ao .NET 5 ou inferior) não oferecem suporte ao cenário "sem depurador" e devem usar o depurador para obter suporte ao Recarga Dinâmica.
- Ao usar o Visual Studio 2022 com um aplicativo .NET 6+, a maioria dos cenários é suportada. Esse suporte não se limita ao novo recurso "sem depurador" mencionado anteriormente. Também inclui outros novos recursos, como suporte para recarrega dinâmica de projetos Blazor e, em geral, edição de arquivos Razor em qualquer aplicativo do ASP.NET Core e Recarga Dinâmica do CSS. Usar Visual Studio 2022 e aplicativos que visam .NET 6 juntos oferece a experiência de Recarga Dinâmica mais poderosa.
A tabela a seguir mostra a versão mínima .NET necessária para dar suporte a .NET Recarga Dinâmica com o depurador anexado (F5) e sem o depurador anexado (Ctrl+F5), com base no tipo de projeto. É necessário o Visual Studio 2022 versão 17.8 ou posterior.
| Tipo de aplicativo | F5 | Ctrl+F5 | Suporte do MetadataUpdateHandler |
|---|---|---|---|
| Console | ✅ | .NET 6 | .NET 6 |
| Em execução no Linux/macOS (Docker e WSL) |
.NET 8 | .NET 6 | .NET 8 |
| Em execução no Arm64 | .NET 7 | .NET 7 | .NET 7 |
| WPF | ✅ | .NET 6 | .NET 6 |
| WinForms | ✅ | .NET 6 | .NET 6 |
| ASP.NET | ✅ | .NET 6 | .NET 6 |
| Blazor Server | .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 Recarga Dinâmica são determinados pelo runtime 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 do .NET Framework
Ao usar o Visual Studio 2022 e iniciar seu aplicativo com o depurador, a experiência de Recarga Dinâmica padrão funciona com a maioria dos tipos de aplicativos .NET e versões de framework. 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, pressuponha que a Recarga Dinâmica está disponível para você e experimente.
Suporte para aplicativos C++
Ao usar o Visual Studio 2022 e iniciar seu aplicativo com o depurador, você pode recarregar um aplicativo C++ nativo ao executar no depurador (F5) usando o botão Recarga Dinâmica. Recarga Dinâmica também tem suporte para aplicativos criados usando projetos CMake e OpenFolder.
Para que seu projeto dê suporte a Recarga Dinâmica, você precisa das seguintes opções definidas:
- Propriedades do Projeto > C/C++ > Geral >Debug Information Format deve ser definido como "Program Database for Edit and Continue
/ZI" - Project > Properties > Linker > General >Enable Incremental Linking deve ser definido como "Sim
/INCREMENTAL"
Para ver as edições compatíveis, confira Alterações de código compatíveis com C++.
Visual Studio 2022 com um aplicativo .NET ou .NET Framework ao usar o depurador
Ao usar Visual Studio 2022 e iniciar o aplicativo com o depurador, Recarga Dinâmica funciona com a maioria das estruturas de aplicativo.
Em qualquer lugar que tenha o .NET e esteja usando o depurador gerenciado do Visual Studio, você deve obter o suporte básico da Recarga Dinâmica. Esse fato significa que mesmo projetos como Azure Functions funcionam muito bem nesse cenário.
Nota
Por padrão, alguns projetos usam a depuração em modo misto, que não oferece suporte à Recarga Dinâmica. Você pode modificar essa configuração em configurações do projeto, definindo
Visual Studio 2022 com um aplicativo do .NET, mas não ao usar o depurador
A Recarga Dinâmica está disponível sem o depurador ao direcionar a maioria dos tipos de aplicativos .NET 6+.
Esse recurso é exclusivo do .NET 6+. Esses aplicativos que não têm como destino .NET 6+ (ou seja, eles têm como destino .NET 5 ou inferior) não dão suporte ao cenário "nenhum depurador" e devem usar o depurador para obter acesso à funcionalidade de Recarga Dinâmica.
Além disso, nem todos os tipos de projeto atualmente dão suporte ao cenário "sem depurador", consulte Support para aplicativos .NET.
Visual Studio 2022 com um aplicativo .NET 6+
Se você usar tanto o Visual Studio 2022 quanto trabalhar em apps destinados ao .NET 6+, você obterá os benefícios da experiência de Recarga Dinâmica mais aperfeiçoada e eficiente.
Com suporte neste cenário:
- Aplicativos Blazor (Server e WebAssembly)
- Editando arquivos Razor em sites do Blazor e de ASP.NET Core regulares
- CSS Recarga Dinâmica
- XAML Recarga Dinâmica
- Suporte para Recarga Dinâmica ao executar aplicativos sem o depurador, como descrito anteriormente em mais detalhes.
Se você visa o .NET 6+, continuará obtendo melhorias nas próximas atualizações do Visual Studio 2022 e na faixa de recursos do .NET e nas principais versões.
Cenários de ASP.NET Core com suporte
Há suporte para a experiência básica de Recarga Dinâmica em muitos cenários ASP.NET. O recurso mais amplamente disponível é a capacidade de alterar o 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 todos os locais onde o Recarga Dinâmica estava disponível anteriormente. Para obter diretrizes mais específicas, consulte .NET Recarga Dinâmica suporte para ASP.NET Core.
Para desenvolvedores do ASP.NET Core que estão mirando no .NET 6+, há recursos adicionais não disponíveis para versões anteriores do .NET. Esses recursos incluem:
- CSHTML: Editar um arquivo CSHTML Razor suporta muitos tipos de edições.
- Atualização do navegador: a edição de um arquivo do Razor atualiza automaticamente as alterações no navegador durante a depuração. Esse recurso só estava disponível anteriormente ao iniciar o aplicativo sem o depurador.
- CSS Recarga Dinâmica: 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 conforme você digita.
- Sem depurador: você obtém o suporte à Recarga Dinâmica ao usar o Visual Studio para iniciar seu aplicativo Web sem o depurador (CTRL-F5).
Alterações Suportadas no .NET
A experiência .NET Recarga Dinâmica é alimentada pelo compilador debugger e C# (Roslyn). Edições suportadas por Roslyn e Alterações de código suportadas (C# e VB) Lista os tipos de edições atualmente suportados e possíveis melhorias futuras.
Alterações com suporte no .NET Framework
A experiência .NET Recarga Dinâmica é alimentada pelo compilador debugger e C#. Alterações de código com suporte (C# e VB) listam os tipos de edições com suporte no momento e possíveis aprimoramentos futuros.
Projetos do .NET e .NET Framework sem suporte
Recarga Dinâmica não está disponível em algumas configurações de projeto:
- Se você estiver usando o Visual Studio sem o depurador, o Recarga Dinâmica só funcionará para aplicativos .NET direcionados a .NET 6+.
- Se você estiver usando o depurador do Visual Studio para executar seu aplicativo, mas tiver desabilitado
Enable Recarga Dinâmica and Edit and Continue when debuggingem configurações, o Recarga Dinâmica não é suportado. - Configurações de lançamento ou compilação personalizada não são suportadas. Seu projeto deve usar a configuração de build
Debug. - Se você estiver direcionando um projeto F# ou .NET Native.
- Não há suporte para otimizações de inicialização ou compilação em .NET Recarga Dinâmica. Por exemplo, se o perfil de depuração do projeto estiver configurado das seguintes maneiras, .NET Recarga Dinâmica não terá suporte:
-
Corte está habilitada para seu projeto. Por exemplo, não há suporte se
PublishTrimmedfor 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
PublishReadyToRunfor definido como True no arquivo de projeto para o perfil de depuração.
-
Corte está habilitada para seu projeto. Por exemplo, não há suporte se
Consulte cenários sem suporte para obter mais detalhes.
Recarga Dinâmica sem suporte para F#
A função Recarga Dinâmica, ou Editar e continuar, não é compatível quando você depura o código F#. As edições no código F# são possíveis durante uma sessão de depuração, mas devem ser evitadas. As alterações de código não são aplicadas durante a sessão de depuração. Portanto, todas as edições feitas no código F# durante a depuração resultarão em código-fonte que não corresponde ao código que está sendo depurado.
Configurar Recarga Dinâmica
Para habilitar, desabilitar ou configurar Recarga Dinâmica, consulte Configure Editar e Continuar.
Mensagem de aviso
Se você vir a caixa de diálogo a seguir, Recarga Dinâmica não poderá aplicar as edições atuais sem reiniciar. Você pode optar por recompilar o aplicativo e aplicar alterações (reinicialização) ou continuar a edição. Se você recompilar, todo o estado do aplicativo será perdido. Se você continuar editando, é possível que alterações ou correções adicionais possam fazer com que Recarga Dinâmica funcionem novamente.
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; o Visual Studio recompilará e recarregará automaticamente em vez de mostrar a caixa de diálogo.
Solução de problemas
Se Recarga Dinâmica não estiver funcionando conforme o esperado, verifique o seguinte:
- Verifique se você está executando um aplicativo e um cenário com suporte. Alguns tipos de projeto, depuração em modo misto, código otimizado e cenários Anexar ao Processo não oferecem suporte para a Recarga Dinâmica. Para obter mais informações, consulte cenários sem suporte.
- Verifique se o aplicativo está usando uma configuração
Debuge se a Recarga Dinâmica está habilitada em Ferramentas>Opções>Depuração>Recarga Dinâmica .NET/C++. - Defina Logging Verbosity como Detailed ou Diagnostic para obter mais informações na saída Recarga Dinâmica.
- Abra a janela Output e, em Exibir saída de, selecione Recarga Dinâmica para revisar as mensagens de diagnóstico.
- Se uma linha aparecer como somente leitura na depuração, ela poderá ser uma declaração ativa na pilha de chamadas ou a edição poderá exigir uma reinicialização.
Para ver uma lista de diagnósticos comuns, consulte Mensagens de erro de Recarga Dinâmica e Editar e continuar. Se o problema persistir e a saída não mostrar uma causa clara, use Reportar um problema para enviar comentários à equipe de Visual Studio.
Se você estiver usando a compactação de resposta no .NET Core, consulte as informações sobre a compactação de resposta.