Ubuntu 22.04下ASP.NET Core Runtime无法识别已安装SDK
.NET 7.0 SDK 无法识别问题(Ubuntu 22.04)
问题现象
从微软官网安装.NET 7.0 Runtime和SDK后,Runtime运行正常,但执行dotnet --list-sdks无任何输出;执行dotnet --info显示无SDK安装,具体输出如下:
Host: Version: 7.0.5 Architecture: x64 Commit: (some hex value) .NET SDKs installed: No SDKs were found. .NET runtimes installed: Microsoft.AspNetCore.App 6.0.16 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 6.0.16 [/usr/lib/dotnet/shared/Microsoft.NETCore.App] Microsoft.NETCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.NETCore.App] Other architectures found: None Environment variables: DOTNET_ROOT [/usr/share/dotnet] global.json file: Not found Learn more: https://aka.ms/dotnet/info Download .NET: https://aka.ms/dotnet/download
使用sudo权限执行命令,结果依旧。
路径信息
- SDK路径:
/usr/share/dotnet,目录内容:-sdk -sdk-manifests -templates - Runtime路径:
/usr/lib/dotnet,目录内容:-host -packs -shared -dotnet -executable- -LICENSE.txt -ThirdPartyNotices.txt
安装步骤
- 添加微软源:
# 获取Ubuntu版本 declare repo_version=$(if command -v lsb_release &> /dev/null; then lsb_release -r -s; else grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"'; fi) # 下载微软签名密钥和仓库文件 wget https://packages.microsoft.com/config/ubuntu/$repo_version/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 install dotnet-sdk-7.0.
注:未手动安装7.0 Runtime,它是通过上述SDK安装命令自动附带安装的。
已尝试的无效解决方法
- 修改
DOTNET_ROOT和PATH环境变量指向SDK路径/usr/share/dotnet - 安装6.0版本SDK,仍无法识别
- 重装Runtime和SDK
解决方案
修复不完整的SDK安装
原安装命令apt install dotnet-sdk-7.0.末尾多了一个点,可能导致安装不完整。执行重新安装命令:sudo apt install --reinstall dotnet-sdk-7.0修复路径关联问题
Ubuntu上.NET的默认主目录是/usr/lib/dotnet,但你的SDK文件在/usr/share/dotnet,可通过软链接关联:sudo ln -s /usr/share/dotnet/sdk /usr/lib/dotnet/sdk sudo ln -s /usr/share/dotnet/sdk-manifests /usr/lib/dotnet/sdk-manifests sudo ln -s /usr/share/dotnet/templates /usr/lib/dotnet/templates执行后重新运行
dotnet --list-sdks验证。重置环境变量
确保DOTNET_ROOT指向正确的.NET主目录,执行临时生效命令:export DOTNET_ROOT=/usr/lib/dotnet export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools若要永久生效,将上述两行添加到
~/.bashrc(或~/.zshrc,根据你使用的shell)文件末尾,再执行source ~/.bashrc刷新配置。修复文件权限
检查SDK目录的权限,确保当前用户有读取访问权:sudo chmod -R 755 /usr/share/dotnet/sdk
内容的提问来源于stack exchange,提问作者Mahmood
相关产品推荐
相关产品推荐

