使用 Visual Studio 2022 打开解决方案,发现好几个项目无法加载,项目全部显示为 xxx(已卸载)。
在输出列表中,报以下错误:
error : 找不到指定的 SDK"Microsoft.NET.Sdk"。
我本地没有安装 .NET 8 SDK,但安装了 .NET 10 SDK。
下载安装完 .NET 8 SDK 并重启 VS 后,依然报错"找不到指定的 SDK"。
打开项目根目录下的 global.json 配置文件,发现了以下配置:
bash
{
"sdk": {
"version": "8.0.0",
"rollForward": "latestMajor",
"allowPrerelease": false
},
"msbuild-sdks": {
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.Build.Traversal": "4.1.0"
}
}
将 "latestMajor" 修改为 "latestMinor" 即可,如下
bash
{
"sdk": {
"version": "8.0.0",
"rollForward": "latestMinor",
"allowPrerelease": false
},
"msbuild-sdks": {
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.Build.Traversal": "4.1.0"
}
}
当配置为 "rollForward": "latestMajor" 时,.NET CLI 会采用无视主版本,强行滚动到当前电脑上已安装的最高主版本的策略。而Visual Studio 2022 对 .NET 10 不兼容。
当配置为 "rollForward": "latestMinor" 时,不允许跨越主版本(Major)滚动。它规定系统只能在当前指定的主版本(也就是 8.x)范围内寻找已安装的最高次版本。