安装.NET Core 7 SDK后,.NET 6项目dotnet watch run失效
问题原因
dotnet watch 是绑定.NET SDK版本的开发工具——当你安装.NET 7 SDK后,系统默认会调用最新SDK里的dotnet watch。这个.NET 7版本的watch工具本身基于.NET 7 Runtime编译,运行时会依赖.NET 7的System.Runtime组件。但你的项目目标框架是.NET 6,运行环境是.NET 6 Runtime,两者版本不匹配,导致watch工具找不到它需要的.NET 7组件,从而抛出文件未找到异常。
而dotnet build、dotnet run、dotnet publish这类命令会直接读取项目的TargetFramework配置,自动适配对应版本的工具链,因此不会出现版本冲突。
解决方案
1. 用global.json锁定SDK版本(最稳定)
在项目根目录创建global.json文件,明确指定项目使用的.NET 6 SDK版本,强制系统调用对应版本的dotnet watch:
{ "sdk": { "version": "6.0.417" // 替换成你本地已安装的.NET 6 SDK版本,可通过`dotnet --list-sdks`查看具体版本号 } }
2. 在项目文件中指定watch工具版本
直接在项目的.csproj文件中添加DotNetWatchToolVersion属性,绑定与.NET 6匹配的watch工具版本,这样即使全局用.NET 7 SDK,项目也会调用指定版本的watch:
<PropertyGroup> <TargetFramework>net6.0</TargetFramework> <DotNetWatchToolVersion>6.0.417</DotNetWatchToolVersion> <!-- 版本号与你的.NET 6 SDK对应 --> </PropertyGroup>
3. 修复或重新安装.NET 6 SDK
如果本地.NET 6 SDK存在组件缺失或损坏,可下载对应版本的.NET 6 SDK,执行修复或重新安装操作,确保watch工具依赖的.NET 6组件完整。
内容的提问来源于stack exchange,提问作者Mojtaba
相关产品推荐
相关产品推荐

