首页 > 解决方案 > Visual Sstudio 2022 Current 中的热重载不适用于现有的 Blazor 应用程序

问题描述

在使用 VS 2022 预览版进行了几次迭代后,我将其删除并在 VS 2022 Current 可用时安装了它。

现有的 Blazor 托管应用程序不会在文件保存或按下热重载按钮时热重载。它在预览版本中重新加载“很好”。我是否在调试或不调试的情况下运行它都没有关系。

使用新安装的版本创建的新应用程序会进行热重载。

我在 *.csproj 或 launchSettings.json 文件中看不到任何重要的区别。他们都针对net6.0。我还删除了 .vs 目录并清理了解决方案。

唯一的区别是我的项目在新的应用程序模板中使用 Program.cs 和 Startup.cs 与仅 Program.cs 相比,但这并不重要。或者,是吗?

是什么阻止了 Visual Studio 热重新加载现有应用程序?

更新

切换到单个 Program.cs 和 WebApplication 构建器确实有所帮助。现在热重载无需调试即可工作。通过调试 VS 说它应用了更改,但它们没有应用到屏幕上。

我仍然想知道为什么需要进行此更改以及如何在调试时启用热重载?

标签: blazorblazor-webassembly.net-6.0visual-studio-2022hosted-blazor-webassembly

解决方案


对于您的问题,目前 Blazor WebAssembly 仅在不调试时支持热重载。这是一种记录在这里:https ://docs.microsoft.com/en-us/aspnet/core/test/hot-reload?view=aspnetcore-6.0

在 Visual Studio 2022 GA (17.0) 中,仅在没有调试器的情况下运行时才支持热重载。

我在尝试诊断为什么我自己现有的 Blazor WebAssembly ASP.Net Core 托管应用程序不会热重新加载时找到了您的 Q,经过 4-5 小时的尝试各种事情后,我终于发现有一个对类库的项目引用仍然针对 .NET 5。在我的情况下,不再需要此引用,删除它修复了我的问题,并且我的 Hot Reload 输出再次显示。

(Web assembly): Hot reload session started

根据我的测试,如果任何引用的 .NET 6 项目又引用了 .NET 5 项目,这也将这种依赖关系带入了混合中,需要删除或升级。


推荐阅读