Ubuntu 20.04 下彻底卸载与升级 Dotnet 环境的完整指南
1. 为什么要彻底卸载Dotnet环境?
在Ubuntu 20.04上开发.NET应用时,我们经常会遇到需要切换不同版本SDK的情况。比如你正在维护一个老项目用的是.NET Core 3.1,但新项目要用.NET 8.0。这时候如果直接在系统里安装多个版本,很容易出现各种奇怪的问题。
我去年就踩过这样的坑:当时系统里同时装了.NET 5.0和6.0两个版本,结果运行dotnet build时总是莫名其妙地选择了错误版本的SDK,导致编译失败。后来才发现是因为PATH环境变量里两个版本的路径都混在一起了。所以我的经验是:除非确实需要多版本共存,否则最好保持开发环境的纯净。
另一个常见场景是升级系统后残留的旧版Dotnet。比如从Ubuntu 18.04升级到20.04时,系统可能保留了之前安装的.NET Core 2.1,这些残留文件不仅占用磁盘空间,还可能干扰新版本的正常运行。
2. 查看已安装的Dotnet环境
2.1 使用apt命令查看
最直接的方法是使用apt命令查询已安装的SDK和运行时:
apt list --installed | grep dotnet这个命令会列出所有已安装的dotnet相关包,输出大概长这样:
dotnet-runtime-5.0/focal,now 5.0.17-1 amd64 [installed] dotnet-sdk-5.0/focal,now 5.0.408-1 amd64 [installed] dotnet-targeting-pack-5.0/focal,now 5.0.17-1 amd64 [installed]2.2 使用dotnet命令检查
如果你还能运行dotnet命令,可以用这些命令查看当前环境:
dotnet --list-sdks dotnet --list-runtimes这两个命令会分别列出所有安装的SDK版本和运行时版本。比如输出可能是:
3.1.426 [/usr/share/dotnet/sdk] 5.0.408 [/usr/share/dotnet/sdk] 6.0.301 [/usr/share/dotnet/sdk]特别注意:有时候apt和dotnet命令显示的版本可能不一致。这是因为有些版本是通过其他方式安装的(比如手动下载安装包)。这种情况下,我们需要结合两种方法的结果来全面了解系统状况。
3. 彻底卸载Dotnet环境
3.1 使用apt卸载SDK和运行时
假设我们要卸载.NET 5.0,可以执行以下命令:
sudo apt remove dotnet-sdk-5.0 dotnet-runtime-5.0 dotnet-targeting-pack-5.0这里有几个容易忽略的点:
- targeting-pack:这个包经常被忘记卸载,它包含了特定版本的引用程序集
- aspnetcore运行时:如果你开发过Web应用,可能还需要卸载
aspnetcore-runtime-5.0 - hosting bundle:如果是生产服务器,可能安装了
dotnet-hosting-5.0
3.2 手动清理残留文件
即使使用apt卸载,Dotnet仍会在系统中留下一些文件和目录。我建议手动检查并清理这些位置:
sudo rm -rf /usr/share/dotnet sudo rm -rf /etc/dotnet sudo rm -rf ~/.dotnet sudo rm -rf ~/.nuget特别注意:清理前最好备份~/.nuget目录,这里面可能包含你下载的NuGet包缓存。如果你经常切换项目,这些缓存可以节省大量下载时间。
3.3 检查环境变量
Dotnet安装时可能会修改你的shell配置文件(如.bashrc或.zshrc)。用文本编辑器检查这些文件,删除所有包含"dotnet"或"DOTNET"的行:
nano ~/.bashrc nano ~/.profile4. 安装新版Dotnet环境
4.1 添加微软软件源
首先需要添加微软的官方软件源:
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这个操作只需要执行一次,以后升级Dotnet版本时不需要重复。
4.2 安装最新版SDK
更新软件包索引并安装最新版SDK:
sudo apt update sudo apt install dotnet-sdk-8.0如果你想安装特定版本(比如LTS版本),可以指定具体版本号:
sudo apt install dotnet-sdk-6.04.3 验证安装
安装完成后,运行以下命令验证:
dotnet --version dotnet --list-sdks如果一切正常,你应该能看到新安装的版本号。
5. 多版本管理技巧
虽然我们建议保持环境纯净,但有时确实需要同时使用多个Dotnet版本。这时候可以使用global.json文件来指定项目使用的SDK版本。
5.1 创建global.json
在项目根目录下运行:
dotnet new globaljson --sdk-version 6.0.301这会生成一个global.json文件,内容类似:
{ "sdk": { "version": "6.0.301" } }5.2 解决版本冲突
当系统安装了多个SDK版本时,Dotnet会按照以下顺序选择版本:
- 当前目录或父目录中的global.json
- 用户目录下的global.json
- 使用最新安装的版本
如果遇到版本冲突问题,可以运行:
dotnet --info这个命令会显示详细的版本信息和使用中的配置,对调试很有帮助。
6. 常见问题解决
6.1 安装失败:依赖关系问题
有时安装Dotnet会遇到依赖关系错误,特别是当你系统里有其他微软相关软件时。这种情况下可以尝试:
sudo apt --fix-broken install sudo apt autoremove然后再重新安装Dotnet SDK。
6.2 命令找不到:PATH问题
如果你安装了新版本但dotnet命令仍然不可用,可能是PATH环境变量没设置正确。检查你的PATH是否包含Dotnet的安装路径:
echo $PATH正常情况下应该包含/usr/share/dotnet。如果没有,可以手动添加:
export PATH=$PATH:/usr/share/dotnet为了永久生效,把这行添加到你的shell配置文件中。
6.3 性能问题:NuGet源配置
国内开发者可能会遇到NuGet包下载慢的问题。可以尝试配置国内镜像源:
dotnet nuget add source https://mirrors.aliyun.com/nuget/ -n aliyun这个命令会添加阿里云的NuGet镜像源,大幅提升包下载速度。
