我正在最新版本 2.2 上构建 .NET Core MVC。我对 CSHTML 文件进行更改并刷新页面时遇到问题,我的更改未反映在浏览器中。我必须重新启动项目才能看到我的更改。这种情况已经发生了一段时间,所以我不确定是什么变化导致了这个问题。
我试过使用 chrome 的“空缓存和硬重载”以及其他浏览器无济于事。这发生在使用 Visual Studio for Mac 和 VS Code 的 Windows 和 Mac 上
在默认的 .Net Core 项目中,它工作正常,所以它一定是我的项目中的某些东西在此过程中发生了变化。我想知道我需要从哪里开始调试这个问题?Startup.cs我已经尝试将我的几乎所有内容都注释掉Program.cs,但没有解决方案。
Startup.cs
Program.cs
似乎在 ASP.NET Core 2.2 中进行了更改(我找不到有关此更改的任何公告)。如果您没有在“开发”环境中显式运行,则编译 Razor 视图,您将看不到对 .cshtml 所做的任何更改
但是,您可以使用 Startup 类中的一些配置来关闭它,如下所示。
services.AddMvc().AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = true);
对于 ASP.NET Core 3.0 及更高版本,请参阅 Alexander Christov的回答。
在ASP.NET Core 3.0 及更高版本中,RazorViewEngineOptions.AllowRecompilingViewsOnFileChange不可用。
RazorViewEngineOptions.AllowRecompilingViewsOnFileChange
惊讶于在应用程序运行时刷新视图不起作用,我发现了以下解决方案:
将Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet 包添加到项目中
在 中添加以下内容Startup.cs:
services.AddControllersWithViews().AddRazorRuntimeCompilation();