Ubuntu 20.04安装.NET SDK 5.0成功后dotnet --list-sdks仅显示3.1版本怎么办
问题原因
- 你当前默认调用的dotnet程序是snap安装的版本,snap软件是沙箱隔离运行的,默认只能读取自身沙箱路径
/snap/dotnet-sdk/下的文件,你后续手动安装的.NET 5.0 SDK默认存放路径为/usr/share/dotnet/(全局安装)或~/.dotnet/(当前用户安装),在snap沙箱外,因此无法被识别。 - 若你未手动配置环境变量,系统PATH中snap的dotnet路径优先级更高,会优先调用snap版dotnet,也会导致新安装的SDK无法被扫描到。
多版本.NET SDK正确安装方法
推荐优先用微软官方APT源安装,版本管理更方便,不会出现路径冲突问题,操作步骤如下:
- 第一步:卸载现有snap版.NET SDK,消除路径冲突
sudo snap remove dotnet-sdk - 第二步:导入微软官方APT源
执行以下命令添加GPG密钥和软件源:wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb sudo apt update - 第三步:安装所需的多个版本SDK
直接通过apt安装对应版本即可,所有版本会自动存放到统一的dotnet工作目录,无需额外配置就能被识别:
安装3.1版本SDK:sudo apt install dotnet-sdk-3.1
安装5.0版本SDK:sudo apt install dotnet-sdk-5.0
注意:.NET 5.0已经停止官方支持,建议优先使用长期支持版本如.NET 6.0或者.NET 8.0
你也可以根据需求安装其他版本的SDK。 - 第四步:验证安装
执行dotnet --list-sdks,输出中会显示所有已安装的SDK版本和对应路径。
如果不想卸载snap版本,可以手动调整环境变量解决:
- 编辑当前用户的shell配置文件(bash用户编辑
~/.bashrc,zsh用户编辑~/.zshrc),在末尾添加以下内容:export DOTNET_ROOT=/usr/share/dotnet export PATH=$DOTNET_ROOT:$PATH - 保存退出后执行
source ~/.bashrc(对应zsh执行source ~/.zshrc)使配置生效,再执行dotnet --list-sdks就能识别到所有版本。
补充说明
如果需要指定某个项目使用特定版本的SDK,可以在项目根目录下创建global.json文件,填入对应版本号即可,示例:
{ "sdk": { "version": "5.0.408" } }
内容的提问来源于stack exchange,提问作者hanushic
相关产品推荐
相关产品推荐

