调试 Blazor WASM(Aspnet 托管)时无法使用热重载

Posted

技术标签:

【中文标题】调试 Blazor WASM(Aspnet 托管)时无法使用热重载【英文标题】:Unable to use Hot Reload while debugging Blazor WASM (Aspnet hosted) 【发布时间】:2021-12-17 22:10:53 【问题描述】:

如果我创建一个新的 Blazor WASM 应用程序,我可以通过在终端窗口中运行 dotnet watch run 来使用热重载。这将启动一个浏览器窗口,我所做的任何更改都会在浏览器中自动更新。

但是,如果我在带有调试器 (F5) 的 Visual Studio 中启动我的应用程序,我不会获得任何热重载功能。当我进行更改时,Visual Studio 会在左下角显示一条消息 Code Changes were applied successfully,但浏览器不会刷新。如果我手动刷新浏览器,我仍然看不到我的更改。

我已选中“保存时热重载”。按下新的 Hot Reload 按钮似乎没有任何作用。

浏览器刷新脚本注入到我的html中。 <script src="/_framework/aspnetcore-browser-refresh.js"></script>

我正在使用 Visual Studio 2022 版本 17.0.0 预览版 7.0 和 dotnet 6 RC 2 (6.0.0-rc.2.21480.10)。

在调试 Blazor WASM 应用程序时无法使用热重载,还是我遗漏了什么?

【问题讨论】:

【参考方案1】:

更新

自 Visual Studio 2022 版本 17.1 起,此错误已得到修复。


后代

在 WebAssembly 应用程序中使用调试器时,当前不支持此功能。 According to Microsoft:

*在 Visual Studio 2022 GA 版本中,尚未启用使用 Visual Studio 调试器时对 Blazor WebAssembly 的热重载支持。如果您在没有调试器的情况下通过 Visual Studio 启动应用程序,您仍然可以获得热重载,我们正在努力在下一次 Visual Studio 更新中解决此问题。

According to Microsoft,这将在 VS 2022 的 17.1 版本中修复。

该修复将包含在 17.1 版本中。

Visual Studio 2022 的最新 preview 版本(2022 年 1 月 5 日发布的 17.1.0 Preview 2)包含对此的修复。我亲自对此进行了测试并验证了它的工作原理。请注意,如果您不想使用预览频道,则仍需要等待 17.1。

【讨论】:

我认为这个答案应该是一个评论...... @enet 你怎么看?老实说,我对这个建议感到困惑。如果这个问题是有效的,那么这就是问题的答案。 您的回答只是说明该功能尚不支持,并提供了文档链接。同样,在我看来,它应该是一个评论,而不是一个答案。我不认为你违反了***的规则,但我觉得它有问题...... 我也对“应该是评论”的建议感到困惑。问题是“这可能吗?”这是一个非常好的答案。 我找到了一种解决方法,方法是使用 CTRL+F5 并在主机完成加载后将调试器附加到进程。它可以正常工作,但重复起来可能有点乏味。使用视觉工作室 2022 专业版。能以某种方式实现自动化吗?【参考方案2】:

现已修复,只需将 Visual Studio 2022 更新到最新版本 (v17.1)!

当 Microsoft 首次发布 VS 2022 时,他们澄清说 WASM 不完全支持 Hot Reload,他们希望在未来的 VS 2022 补丁中支持它。

https://devblogs.microsoft.com/dotnet/update-on-net-hot-reload-progress-and-visual-studio-2022-highlights/

Blazor Wasm 是一个例外,它仅在今天在没有调试器的情况下启动您的应用时才有效,但我们将在未来的更新中解决此问题,如前所述。

他们已在 2022 年 2 月 15 日正式发布的 VS 2022 版本 17.1 中包含此修复程序。

我已更新并且可以确认调试时热重载对我有用!

【讨论】:

以上是关于调试 Blazor WASM(Aspnet 托管)时无法使用热重载的主要内容,如果未能解决你的问题,请参考以下文章

IdentityServerBuilderConfigurationExtension 中的 Blazor WASM 托管身份验证空引用异常

未注册身份验证 AuthenticationStateProvider 的 Blazor Wasm 托管预渲染

升级到 .net 6 时托管的 Blazor WASM 身份验证中断

使用身份验证托管的 Blazor Wasm 上出现 Azure 500 错误

C#:如何在 Blazor Wasm 托管中将动态 Razor 组件从服务器发送到客户端?

使用 gRPC 服务器作为主机调试 Blazor Webassembly