Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.NET Core 3.0: Razor views don't automatically recompile on change

According to the documentation, Razor views should, by default, recompile on change on local environments for ASP.NET Core 3.0.

However, my project doesn't do this locally. If I change a view and refresh when I'm debugging locally, the change is not reflected. I have to stop the solution, re-run, and then see the change.

I am doing this on a default ASP.NET Core Web Application template on Visual Studio 2019 with ASP.NET Core 3.0.0 Preview 2 using Razor pages. Any idea if I need to change settings to enable this feature?

UPDATE NOV 2019 FOR 3.0 FULL RELEASE:

This question still gets a lot of views. A few answers have cited to add

services.AddControllersWithViews().AddRazorRuntimeCompilation();  

To your ConfigureServices() function in Startup.cs after adding the Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet package. In my case, I am only using Razor Pages, so I don't call AddControllersWithViews(). Instead, this worked for me:

services.AddRazorPages().AddRazorRuntimeCompilation(); 
like image 772
tarun713 Avatar asked Feb 08 '19 21:02

tarun713


Video Answer


1 Answers

For ASP.NET Core 3 release version:

   services.AddControllersWithViews().AddRazorRuntimeCompilation(); 

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0

It can also be enabled conditionally only for local development, quoted from the link:

Runtime compilation can be enabled such that it's only available for local development. Conditionally enabling in this manner ensures that the published output:

Uses compiled views.
Is smaller in size.
Doesn't enable file watchers in production.

   public Startup(IConfiguration configuration, IWebHostEnvironment env)     {         Configuration = configuration;         Env = env;     }      public IWebHostEnvironment Env { get; set; }     public IConfiguration Configuration { get; }      public void ConfigureServices(IServiceCollection services)     {         IMvcBuilder builder = services.AddRazorPages();  #if DEBUG             if (Env.IsDevelopment())             {                 builder.AddRazorRuntimeCompilation();             } #endif     } 
like image 69
Rauland Avatar answered Sep 28 '22 11:09

Rauland