我正在最新版本2.2上构建一个。net Core MVC。当我对CSHTML文件进行更改并刷新页面时,我有一个问题,我的更改没有反映在浏览器中。我必须重新启动项目才能看到我的更改。这种情况已经发生了一段时间了,所以我不确定是什么变化导致了这个问题。

我试过使用chrome的“空缓存和硬加载”以及其他浏览器,但都没有用。这发生在Windows和Mac上,使用Visual Studio for Mac和VS Code

在默认的。net Core项目中,它工作得很好,所以它一定是我的项目中发生了变化。我想知道我需要从哪里开始调试这个问题?我试着在我的创业公司里注释掉几乎所有的东西。c和Program.cs没有分辨率。


当前回答

首先使用nuget管理器安装microsoft . aspnetcore . mv . razor . runtimecompilation 然后将下面的代码添加到你的startup.cs中

services.AddRazorPages().AddRazorRuntimeCompilation();

Net6.0也可以。

builder.Services.AddRazorPages().AddRazorRuntimeCompilation();

其他回答

在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不可用。

令人惊讶的是,在应用程序运行时刷新视图没有工作,我发现了以下解决方案:

将microsoft . aspnetcore . mv . razor . runtimecompilation NuGet包添加到 项目 在Startup.cs中添加如下内容: .AddRazorRuntimeCompilation services.AddControllersWithViews () ();

以下是对好奇的完整解释。

我在开发。net 6 MVC Web应用程序时遇到了同样的问题。

我从NuGet包管理器中安装了Microsoft.AspNetCore.Mvc.Razor.Runtime.Compilation,然后添加了.AddRazorRuntimeCompilation();后

builder.services.AddControllersWithViews();

它看起来是这样的

builder.services.AddControllersWithViews().AddRazorRuntimeCompilation();

它成功了!

希望这对你有所帮助。

我在从。net Core 3升级到。net 5.0时遇到了类似的问题

问题是由于我们无法更改Telerik控件中的旧依赖。

通过更改.csproj文件中的引用修正

<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="3.8.0" />

to

<PackageReference Include="Microsoft.CodeAnalysis" Version="3.8.0" />

(你的版本可能不同)

对于使用Net core 3.0或更高版本的用户

进入工具→Nuget包管理器→管理解决方案的Nuget包 移动到浏览标签从互联网浏览 搜索RuntimeCompilation 点击microsoft . aspnetcore . mv . razor . runtimecompilation 在您的项目中安装当前稳定版本 打开Startup.cs文件 去void方法ConfigureServices 添加行:services.AddControllersWithViews().AddRazorRuntimeCompilation(); 你完成了

重新运行看看。现在可以刷新视图或页面。