ASP .NET Core - Auto Refresh com dotnet watch (NET 5)

 Hoje veremos como realizar o auto Refresh usando o dotnet watch em aplicações ASP .NET Core no NET 5.0.

Com o lançamento do .NET 5, vieram muitas melhorias de desempenho e novos recursos na ASP .NET Core. Hoje vamos focar no recurso que permite o auto Refresh usando o dotnet watch.

Se você já instalou o .NET Core SDK 5.0 ou Visual Studio 16.8 (ou posterior), executando qualquer projeto ASP .NET Core (independentemente do TargetFramework), a página será atualizada sempre que detectar uma alteração feita.

O dotnet watch é uma ferramenta que executa um comando CLI do .NET Core quando os arquivos de origem são alterados. Por exemplo, uma alteração de arquivo pode acionar a compilação, execução de teste ou deploy.

Para executar o projeto usando esta ferramenta abra uma janela de comandos e navegue até a pasta do projeto e a seguir emita o seguinte comando:  dotnet watch run  

O projeto será aberto e qualquer alteração irá ser detectada e a página será atualizada.

Assim o dotnet watch atualiza o navegador ao detectar alterações nos arquivos observados. Para fazer isso, o comando watch injeta um middleware no aplicativo que modifica as respostas HTML criadas pelo aplicativo.

O middleware adiciona um bloco de script JavaScript à página que permite que o dotnet watch instrua o navegador ser atualizado. Atualmente, as alterações em todos os arquivos monitorados, incluindo conteúdo estático, como arquivos .html e .css, fazem com que o aplicativo seja reconstruído.

Dessa forma a execução do dotnet watch em um aplicativo web inicia um navegador que navega para a URL do aplicativo quando estiver pronto; ele faz isso lendo a saída do console do aplicativo e aguardando a mensagem pronta exibida pelo WebHost.

Vamos testar isso na prática...

recursos usados:

Criando o projeto ASP .NET Core MVC

Vamos criar uma solução chamada AspnWeb5 que será a nossa aplicação web ASP .NET Core MVC.

Para isso clique com o botão direito do mouse sobre a solução e a seguir clique em Add-> New Project;

Selecione o template ASP .NET Core Web Application e clique em Next;

Informe o nome AspnWeb5 e clique em Create;

A seguir escolha :

Clique no botão Create;

Isso criará um novo projeto MVC com uma aplicação básica.

Abra uma janela de comandos e navegue até a pasta onde o projeto foi criado e emita o comando: dotnet watch run

O comando será executando e a aplicação será levantada para atendimento:

Abaixo vemos a página Index.cshtml sendo exibida e a view Index.cshtml aberta no VS 2019:

Vamos alterar o nome Macoratti para Macoratti .net e veremos que imediatamente a página será atualizada:

Este recurso pode ser usando no VS 2019 como mostrado e também no VS Code usando a ferramenta de linha de comando NET CLI.

Qualquer comando CLI do .NET Core pode ser executado com dotnet watch. Por exemplo:

Comando comando com watch
dotnet run dotnet watch run
dotnet run -f netcoreapp3.1 dotnet watch run -f netcoreapp3.1
dotnet test dotnet watch test

No Visual Studio 2019 você também pode definir a seguinte configuração :

1- A partir do Menu Tools -> Options;
2- Selecione Projects and Solutions -> ASP .NET Core
3- Selecione : Auto build and refresh browser after saving changes
4- Pressione Ctrl + F5 (Start Without Debugging

Configuração dotnet-watch

Algumas opções de configuração podem ser passadas ao dotnet watch por meio de variáveis ​​de ambiente.

As variáveis ​​disponíveis são:

DOTNET_USE_POLLING_FILE_WATCHER - Se definido como "1" ou "true", o dotnet watch usa um observador de arquivo de pesquisa em vez do FileSystemWatcher da CoreFx. Usado ao observar arquivos em compartilhamentos de rede ou volumes montados em Docker.

DOTNET_WATCH_SUPPRESS_MSBUILD_INCREMENTALISM - Por padrão, o dotnet watch otimiza o build evitando certas operações, como executar a restauração ou reavaliar o conjunto de arquivos observados em cada alteração de arquivo. Se definido como "1" ou "true", essas otimizações são desabilitadas.

DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER - O dotnet watch run tenta iniciar navegadores para aplicativos web com launchBrowser configurado em launchSettings.json. Se definido como "1" ou "true", esse comportamento é suprimido;

DOTNET_WATCH_SUPPRESS_BROWSER_REFRESH - O dotnet watch run tenta atualizar os navegadores quando detecta mudanças no arquivo. Se definido como "1" ou "true", esse comportamento é suprimido. Esse comportamento também é suprimido se DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER estiver definido.

"Mas o fruto do Espírito é: amor, gozo, paz, longanimidade, benignidade, bondade, fé, mansidão, temperança.
Contra estas coisas não há lei."

Gálatas 5:22,23

Referências:


José Carlos Macoratti