为什么当 .cshtml 更改时,刷新后页面不更新

Why does page not update after refresh when .cshtml changes

提问人:Bercovici Adrian 提问时间:1/9/2019 最后编辑:Bercovici Adrian 更新时间:6/6/2022 访问量:46771

问:

我正在尝试,我不明白为什么在刷新浏览器页面后更改时它不更新?更新本身不应该类似于 how does 吗?Blazorcomponentclientangular

它仅在我重新启动服务器时刷新。blazor

索引.cshtml

@page "/"

<h1>Hello, world!</h1>

如果我更改 让我们说 到 里面的文本,我保存项目并刷新页面(正如我在教程中建议的那样)我不应该看到吗?<h1>Hello peopleBlazorHello people

ASP.Net-Core 客户端 Blazor

评论


答:

26赞 Flores 1/9/2019 #1

我猜您正在连接调试器的情况下运行应用程序?这样可以防止重新编译。您需要:

Press Ctrl-F5 to run the app without the debugger. Running with the debugger (F5) isn't supported at this time.

https://github.com/dotnet/aspnetcore/issues/5456

评论

0赞 Bercovici Adrian 1/9/2019
是的,我确实是用调试器运行它。
0赞 enet 1/9/2019
@Flores,你的意思是我可以通过按 Ctrl-F5 来运行应用程序,更新我的代码(当然不需要关闭我的应用),保存更改,然后刷新页面,瞧,我们的 Blazor 应用显示更改。不可能。这对我来说是新事物,保存项目,重新编译它(我不是在讽刺。我是认真的)。
1赞 enet 1/9/2019
@Bercovici Adrian,如果我在上面的评论中没有错,那么您可以在每次更新后按 Ctrl-F5(重新编译和运行您的应用程序),或者您可以构建或重新构建您的应用程序,然后按 F5。
0赞 Pawel 2/1/2020
调试器是否正在运行并不重要 - Eureka anwer 是正确的。
0赞 user183872 2/5/2020
在 VS2019 中,这仍然不起作用。在 MVC 中,这工作正常,那么我们是否必须退后一步,了解开发人员的体验?
2赞 Pinpaho 8/1/2019 #2

如果进入“工具”>“选项”>“键盘”,然后在“显示包含的命令”搜索框中搜索“BrowserLink”。找到显示“OtherContextMenus.BrowserLink.RefreshLinkedBrowsers”的选项,默认情况下,该选项设置为 CTRL+Alt+Enter。 单击“删除”,然后选择“按快捷键”输入并按 Ctrl+S。接下来(就在输入的左侧)将“使用”全局“中的新快捷方式更改为”文本编辑器”。单击“确定”,直到窗口关闭。现在,Visual Studio 与“保存文件”和“刷新链接的浏览器”共享 CTRL+S。

(仅当编辑窗口中的文本编辑器 .cshtml、.css、.js 等文件是活动选择时,这才有效)警告:如果您不将其设置为全局以外的其他值,那么它将覆盖保存的快捷方式,您将无法保存文件。

163赞 Eureka 9/27/2019 #3

Asp.net Core 3.0 之后,使用 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 包启用运行时编译。 若要启用运行时编译,应用必须:

安装 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet 包。

更新项目的启动。ConfigureServices 方法包含对 AddRazorRuntimeCompilation 的调用:

services
    .AddControllersWithViews()
    .AddRazorRuntimeCompilation();

services.AddMvc().AddRazorRuntimeCompilation();  

评论

1赞 Cesar 10/18/2019
这适用于 Web 应用程序(但不在调试中)。它不适用于在引用的 razor 库中的文件中所做的更改。
12赞 jhhwilliams 11/11/2019
您也可以添加 on 而不是 或 。.AddRazorRuntimeCompilation();services.AddRazorPages()services.AddControllersWithViews()services.AddMvc()
3赞 grimdog_john 12/18/2019
打开/关闭此功能会影响性能吗?如果在生产中关闭但在开发中打开,会有什么区别吗?
3赞 Flores 1/29/2020
Razor 运行时编译是一项 MVC 功能,而不是受支持的 Blazor 功能。github.com/dotnet/aspnetcore/issues/16915
1赞 Prisoner ZERO 12/10/2020
这行得通...但事实上,我必须加载一个组件来做一些如此“标准”的事情,这完全是蹩脚的。
10赞 Mahesan Rv 7/18/2020 #4

应在 razor 页面中添加或启用运行时编译。

安装包 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation -Version 3.1.6

安装后,将启动文件设置为 ,

 services.AddMvc().AddRazorRuntimeCompilation();

评论

1赞 Duck Ling 7/22/2020
Intellisense 没有建议安装哪个包,我+1
4赞 snnpro 12/23/2020 #5

执行以下操作:

  1. 从 NuGet 安装 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation。

  2. 更新 Startup 类中的 ConfigureServices 方法,如下所示:

服务业。AddControllersWithViews()。AddRazorRuntimeCompilation();

  1. 你好走了。
1赞 Samuel Kazan 6/6/2022 #6

添加“服务。AddMvc() 中。AddRazorRuntimeCompilation();“并安装 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 包 6.0.5 将修复该问题,但它会破坏”css 隔离”。您会注意到的第一件事是页脚将失去其位置

评论

0赞 Dror Bar 9/25/2022
有什么合适的解决方案吗?