将项目升级至.NET 6时PowerShell构建SDK版本冲突问题求助
解决方案
1. 切换到子项目目录执行构建
.NET SDK会优先读取当前执行命令目录下的global.json,所以在PowerShell里,先切换到包含.NET 6版本global.json的子项目目录,再执行构建命令:
cd ./你的Net6项目所在目录 dotnet build
2. 构建时指定SDK版本
如果需要在根目录批量构建,不用切换目录,直接在build命令里指定要用的.NET 6 SDK版本:
dotnet build ./你的Net6项目路径/项目文件.csproj --sdk-version 6.0.400
也可以通过环境变量临时指定SDK路径:
$env:DOTNET_ROOT="C:\Program Files\dotnet\sdk\6.0.400" # 替换成你实际的.NET 6 SDK安装路径 dotnet build ./你的Net6项目路径/项目文件.csproj
3. 调整根目录global.json的版本策略
如果多数项目已经迁移到.NET 6,直接修改根目录的global.json,把SDK版本改成.NET 6的,同时给还需要用3.1的项目单独放一个指定3.1版本的global.json:
根目录global.json示例:
{ "sdk": { "version": "6.0.400", "rollForward": "latestMajor" } }
3.1项目目录下的global.json示例:
{ "sdk": { "version": "3.1.100" } }
4. 检查工作目录与清理缓存
- 用
Get-Location命令确认PowerShell当前工作目录是否正确,确保是包含新global.json的目录。 - 执行
dotnet nuget locals all --clear清理本地缓存,再重新构建试试。
内容的提问来源于stack exchange,提问作者Dipesh Nagpal
相关产品推荐
相关产品推荐

