热重载在 Blazor Server .NET 6 中不起作用

Fro*_*sch 11 visual-studio blazor hot-reload blazor-server-side .net-6.0

我的问题

我使用的是 Visual Studio Professional 2022 版本 17.2.5,并且有一个针对 .NET 6 的 Blazor Server 项目,其中热重载功能让我很头疼。这个功能在我的其他项目中运行良好,构建方式完全相同。

问题描述

热重载功能似乎仅在涉及C#代码隐藏时才起作用。但是,在我的.razor文件中,热重载不起作用。当我对文本进行简单的更改并单击“保存”时,我注意到 Visual Studio 底部出现以下消息:

未发现代码更改。

因此,没有热重载。这在我的其他项目中不是问题,当我对它们进行相同的更改时,我收到消息:

项目
已成功应用已保存的代码更改。

热重载按预期工作。

我想指出的是,我希望它能够像在我的其他项目中一样运行,只需单击“保存”或单击“热重载”按钮即可。我不想dotnet watch --project run每次都必须使用然后等待它重新编译。

设置和我尝试过的

  1. 我已经检查Tools > Options > Debugging > .NET / C++ Hot Reload并确保所有这些设置都已检查。
  2. 我比较了launchSettings.json两个项目的文件,它们看起来是一样的。
  3. 我比较了Program.cs两个项目的文件。在我看来,没有什么明显的原因。
  4. 就像我上面提到的,我已经尝试过这种dotnet watch run方法并且有效。它说启用了热重载,但是为了使任何微小的更改生效,项目都会重新编译 - 我不希望这样。
  5. 在过去的几周里,我一直在研究我的问题,但总是空手而归。SO 上的大多数答案似乎要么是针对 Blazor WASM,要么是在处理 .NET 6 中开箱即用的热重载之前的问题。尽管也许我错过了一些东西。

编辑

  1. 我尝试过使用和不使用调试器运行该项目,没有区别。

  2. 根据 Scott Perry 的建议,我尝试关闭 VS 并删除.vsbinobj文件夹,然后重新加载我的项目。依然没有。

那么,有人知道这个项目可能出了什么问题吗?关于我应该研究什么的任何见解?

谢谢

Fro*_*sch 3

我终于弄清楚了。

在我的.csproj文件中,我有以下代码:

<PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
        <UseRazorSourceGenerator>false</UseRazorSourceGenerator> 
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

我不确定为什么我<UseRazorSourceGenerator>在那里有一行开头...但是将值设置为true类似于下面更新的代码解决了我的热重载问题。

<PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
        <UseRazorSourceGenerator>true</UseRazorSourceGenerator> 
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)