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

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

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


当前回答

您绝对确定使用的是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

其他回答

下面帮助我当视图在单独的项目。

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

在ASP。NET Core 3.0及更高版本,RazorViewEngineOptions。AllowRecompilingViewsOnFileChange不可用。

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

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

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

我能够在Rider中通过添加ASPNETCORE_ENVIRONMENT=开发环境变量来解决这个问题。

在Visual Studio 2022预览版中,似乎有一个叫做热重载的选项。

它似乎也可以在Visual Studio 2019中使用。

使用热重载,您现在可以修改您的应用程序托管源代码 应用程序正在运行,不需要手动暂停或点击 一个断点。只需在应用程序运行时进行受支持的更改 在我们新的Visual Studio体验中使用“应用代码更改” 按钮以应用您的编辑。

https://devblogs.microsoft.com/dotnet/introducing-net-hot-reload/

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

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