Страница.NET Core MVC не обновляется после изменений

Я создаю.NET Core MVC в последней версии 2.2. У меня возникла проблема, когда я вношу изменения в файл CSHTML и обновляю страницу, мои изменения не отражаются в браузере. Мне нужно перезапустить проект, чтобы увидеть мои изменения. Это происходит какое-то время, поэтому я не совсем уверен, какие изменения вызвали эту проблему.

Я пробовал использовать хром "Empty Cache и Hard Reload", а также другие браузеры безрезультатно. Это происходит в Windows и Mac, используя Visual Studio для Mac и VS Code

В стандартном проекте.Net Core он отлично работает, поэтому в моем проекте это должно быть что-то изменившееся на этом пути. Мне интересно, где мне нужно начать, чтобы отладить эту проблему? Я пробовал комментировать почти все в моих Startup.cs и Program.cs без разрешения.

Ответ 1

Похоже, что в ASP.NET Core 2.2 было сделано изменение (и я не могу найти никаких объявлений об этом изменении). Если вы явно не работаете в среде "Разработка", то Razor Views компилируются, и вы не увидите никаких изменений, внесенных в.cshtml.

Однако вы можете отключить это, используя некоторые настройки в вашем классе запуска следующим образом.

services.AddMvc().AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = true);

Ответ 2

В ASP.NET Core 3.0 (на момент написания еще в предпросмотре!) RazorViewEngineOptions.AllowRecompilingViewsOnFileChange недоступен (или нет доступа? - не успел проверить).

Удивленный тем, что обновление представления во время работы приложения не работает, я обнаружил следующее решение (будьте осторожны, в выпуске все может измениться!):

  1. Добавьте Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation пакет NuGet в проект
  2. Добавьте следующее в Startup.cs:

    services.AddControllersWithViews()AddRazorRuntimeCompilation();.

Здесь полное объяснение для любопытных...

НТН

Ответ 3

Используя .net core 2.2, запустив приложение с командой dotnet watch run, проект перезапускается после каждого изменения

Ответ 4

Ниже помогли мне, когда представления были в отдельном проекте.

if(HostingEnvironment.IsDevelopment()){ // only in development (optional)
    services.AddMvc().AddRazorOptions(o => {
        o.FileProviders.Add(new PhysicalFileProvider(PATH_TO_PROJECT));
    });
}

Ответ 6

Решение @Chris Aitchison было решением для меня!