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

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

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


当前回答

我在开发。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" />

(你的版本可能不同)

您绝对确定使用的是2.2吗?检查您的csproj,因为它可能是这个错误https://github.com/aspnet/Razor/issues/2466 您可以尝试关闭RazorCompileOnBuild更多信息https://learn.microsoft.com/en-us/aspnet/core/razor-pages/sdk?view=aspnetcore-2.1#properties

有两种方法可以解决这个问题:

1. 检查您的.sln文件所在文件夹的权限。文件访问权限可能会有问题,因为Visual studio在IIS express服务器运行时可能无法访问文件,因此为了在每次需要重新启动服务器时反映新的.cshtml更改,因此我建议通过以下方式编辑文件夹访问权限:

右键单击文件夹->属性->安全->点击编辑按钮->检查所有选项->保存。

重新启动Visual studio查看更改。

如果这不起作用,然后使用2选项。

2.在startup.cs文件中的项目中,在method中的ConfigureServices()行下面添加以下内容:

服务业。AddMvc().添加剃刀选项(选项 => 选项。允许重新编译视图文件更改 = true);

除了亚历山大·克里斯托夫的回答,自从ASP。NET Core 3.1你可以在不改变启动文件的情况下为开发环境启用视图编译:

安装microsoft . aspnetcore . mv . razor . runtimecompilation NuGet包。 设置下一个环境变量(例如通过launchSettings.json中的environmentVariables部分): ASPNETCORE_ENVIRONMENT到“开发”。 aspnetcore_hostingstartupassemation到“microsoft . aspnetcore . mv . razor . runtimecompilation”。

我刚刚用最新的ASP创建了一个新项目。NET MVC Core 3.1模板,我修改了以下内容,以启用调试的运行时重新编译:

参考NuGet包- microsoft . aspnetcore . mv . razor . runtimecompilation。

Startup.cs - ConfigureServices(IServiceCollection services) WAS:

// stuff...

services.AddControllersWithViews();

// more stuff...

NOW:

// stuff...

var mvcBuilder = services.AddControllersWithViews();

#if DEBUG
    mvcBuilder.AddRazorRuntimeCompilation();
#endif

// more stuff...