dotnet watch

Hoje em dia temos uma infinidade de ferramentas e "acessórios" para tornar o desenvolvimento de software mais ágil e produtivo.

Escolhi falar de uma ferramenta que tem me ajudado muito nos meus testes e implementações do Asp .NET Core no MacOS, usando o Visual Studio Code.

No dia-a-dia, o fato de você ter que “buildar” a aplicação a cada modificação, pra depois poder rodar, ou até mesmo executar os testes, é no mínimo chato.

Tenho usado e gostado bastante do dotnet watch.

É uma ferramenta, que ao ser adicionada no projeto, pode ser usada para que seu código seja compilado, rodar os testes ou até mesmo fazer o publish toda vez que você fizer alguma alteração no código.

No meu caso, poupa tempo, e comandos no terminal. :)

Assumindo que você já tenha um projeto em Asp .Net Core (Web ou API), ou uma Library, basta adicionar a referência ao DotNet.Watcher.Tools na seção “tools” do arquivo projetc.json:

“Microsoft.DotNet.Watcher.Tools”: “1.0.0-preview2-final”

Seu arquivo deve ficar assim (ou similar caso já tenha adicionado outras referências):

Seção "tools" do arquivo project.json (Web App) — com a referência ao dotnet watch adicionada

Feito isso, apenas rode o comando dotnet restore e pronto, seu projeto já está configurado para usar o watcher:

$ dotnet restore

A partir daí, basta usar os comandos dotnet usando o dotnet watch:

Por exemplo, para rodar seu projeto, e fazer com que cada modificação ele seja recompilado:

$ dotnet watch run

Assim, ao alterar qualquer arquivo, o dotnet watch se encarrega de "observar" esta modificação e compilar novamente o projeto.

dotnet watch interpreta a mudança no arquivo HomeController.cs e automaticamente "rebuilda" o projeto

Obviamente a ferramenta deve ser usada com bom senso…

Referências:

O código fonte de um projeto simples Web com o dotnet watch:

Update 07/11/2016: Foi perguntado pelo Marcelo Antiqueira, se era compatível com a versão do VS no Windows, e única mudança necessária é a maneira de referenciar o "tools", ficando desta forma:

“Microsoft.DotNet.Watcher.Tools”: {
“version”: “1.0.0-preview2-final”,
“imports”: “portable-net451+win8”
}

a seção completa: