Ubuntu 22.04下dotnet run正常,直接运行二进制提示需安装.NET
问题解决:Ubuntu 22.04下直接运行.NET控制台程序提示需安装.NET
问题背景
Ubuntu 22.04系统,已从微软仓库安装.NET 7 SDK。使用dotnet new console创建项目后,dotnet run可正常输出,但进入输出目录执行./dottest时,提示必须安装.NET。
问题根源
环境变量DOTNET_ROOT被错误设置为/usr/lib/dotnet,但实际.NET的安装路径是/usr/share/dotnet。直接运行生成的可执行文件时,程序会通过DOTNET_ROOT查找.NET运行时,路径不匹配导致报错;而dotnet run由SDK直接调度,不受这个错误变量影响。
解决方案
1. 临时运行(仅当前终端有效)
在运行程序前临时指定正确的DOTNET_ROOT:
DOTNET_ROOT=/usr/share/dotnet ./dottest
2. 永久修复环境变量
需要找到DOTNET_ROOT的定义位置并修正,常见的配置文件包括:
- 用户目录下的
.bashrc、.bash_profile(Bash环境)或.zshrc(Zsh环境) - 系统级配置文件
/etc/profile、/etc/environment /etc/profile.d/目录下的dotnet相关脚本文件
找到包含DOTNET_ROOT=/usr/lib/dotnet的行,将其修改为:
DOTNET_ROOT=/usr/share/dotnet
修改完成后,重启终端或执行以下命令让配置生效(以.bashrc为例):
source ~/.bashrc
3. 验证修复
执行以下命令确认环境变量已修正:
echo $DOTNET_ROOT
输出应为/usr/share/dotnet,之后再次运行./dottest即可正常执行。
内容的提问来源于stack exchange,提问作者Damn Vegetables
相关产品推荐
相关产品推荐

