Visual Sstudio 2022 Current 中的热重载不适用于现有 Blazor 应用程序

Mil*_*lan 7 blazor blazor-webassembly .net-6.0 visual-studio-2022 hosted-blazor-webassembly

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

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

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

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

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

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

更新

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

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

The*_*uke 4

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

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

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

(Web assembly): Hot reload session started
Run Code Online (Sandbox Code Playgroud)

根据我的测试,如果任何引用的 .NET 6 项目反过来引用 .NET 5 项目,这也会将该依赖项带入混合中,并且需要删除或升级。