我正在使用最新版本2.2构建.NET Core MVC。我在更改CSHTML文件并刷新页面时遇到问题,我的更改未反映在浏览器中。我必须重新启动项目才能看到我的更改。这已经发生了一段时间,所以我不确定是什么变化导致了这个问题。
我已经尝试使用chrome的“Empty Cache and Hard Reload”以及其他浏览器无济于事。这种情况发生在使用Visual Studio for Mac和VS Code的Windows和Mac上
在默认的.Net Core项目中,它工作正常,因此它必须是我的项目中的某些内容随之改变。我想知道我需要从哪里开始调试这个问题?我已经尝试在我的Startup.cs
and Program.cs
几乎所有内容都没有解决方案。
似乎在ASP.NET Core 2.2中进行了更改(我找不到有关此更改的任何声明)。如果您未在“开发”环境中明确运行,则会编译Razor视图,您将看不到对.cshtml所做的任何更改
但是,您可以使用Startup类中的某个配置关闭此项,如下所示。
services.AddMvc().AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = true);
使用带有命令dotnet watch run
的.net core 2.2运行应用程序,每次更改后都会重新启动项目
在ASP.NET Core 3.0中(仍然在预览中!)RazorViewEngineOptions.AllowRecompilingViewsOnFileChange
is不可用(或者没有accessibe? - 没时间检查)。
令人惊讶的是,在应用程序运行时刷新视图不起作用我发现了以下解决方案(注意,发布中的内容可能会发生变化!):
Startup.cs
中添加以下内容:
。services.AddControllersWithViews()AddRazorRuntimeCompilation();这是好奇的full explanation ......
HTH
你绝对确定你使用2.2吗?检查你的csproj,因为它可能是这个bug https://github.com/aspnet/Razor/issues/2466你可以尝试关闭RazorCompileOnBuild
更多信息https://docs.microsoft.com/en-us/aspnet/core/razor-pages/sdk?view=aspnetcore-2.1#properties
当观点在单独的项目中时,下面帮助了我。
if(HostingEnvironment.IsDevelopment()){ // only in development (optional)
services.AddMvc().AddRazorOptions(o => {
o.FileProviders.Add(new PhysicalFileProvider(PATH_TO_PROJECT));
});
}