You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

dotnet watch修改代码后浏览器自动重载失效,VS Pro Ctrl+F5运行正常

问题根因

你遇到的问题是.NET 6预览版附带的MSBuild 17.x预览版与.NET 5 Blazor WebAssembly的dotnet watch工具存在兼容性冲突导致的。
dotnet watch的浏览器自动重载功能依赖构建过程中向页面注入的WebSocket客户端脚本,该脚本会监听服务端的重载通知触发页面刷新。你安装的MSBuild预览版修改了静态资源注入的逻辑,导致Kestrel启动时没有正确把自动重载的JS脚本注入到页面中,因此服务端重启后浏览器收不到刷新通知。
CSS热重载走的是独立的静态资源增量更新链路,不受该注入逻辑影响,所以可以正常工作。Visual Studio启动时使用IIS Express,走的是VS内部适配好的脚本注入逻辑,因此功能不受预览版MSBuild影响。

可排查的配置及修复方案
  • 检查当前dotnet SDK的默认版本
    运行命令dotnet --version确认当前默认调用的SDK版本,如果输出为.NET 6预览版,在项目根目录下添加global.json文件,指定项目使用.NET 5版本的SDK,示例配置如下:
{
  "sdk": {
    "version": "5.0.408",
    "rollForward": "latestMinor"
  }
}

配置保存后重新执行dotnet watch run验证自动重载功能。

  • 检查项目文件的自动重载配置
    打开项目的.csproj文件,确认不存在<DotNetWatchSupportsBrowserRefresh>false</DotNetWatchSupportsBrowserRefresh>配置项,如果存在将值改为true或者直接删除该行即可。
  • 验证脚本注入是否正常
    按下F12打开浏览器开发者工具,刷新页面后查看Console栏,是否存在dotnet-watch-browser-refresh.js相关的404报错或者WebSocket连接失败报错,如果存在该类报错即可确认是脚本注入失败导致的问题。
  • 临时规避方案
    如果不想修改全局SDK配置,可以在Visual Studio中用Ctrl+F5启动IIS Express进行开发,或者手动指定.NET 5 SDK的完整路径调用dotnet watch,示例命令:
    "C:\Program Files\dotnet\sdk\5.0.408\dotnet.exe" watch run

内容的提问来源于stack exchange,提问作者Patrick Szalapski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:24:04