发生致命错误。文件夹 [/usr/share/dotnet/host/fxr] 不存在

Ubuntu 22.04 dotnet --info 更新后无法访问 dotnet。重新安装 dotnet 和 vscode 没有帮助

enter image description here

stack overflow A fatal error occurred. The folder [/usr/share/dotnet/host/fxr] does not exist
原文答案
author avatar

接受的答案

.NET (Core) 首次发布时,尚未在官方 Ubuntu 存储库中提供,因此人们添加了 Microsoft APT 存储库来安装它。

现在,这些包是 Ubuntu 存储库的一部分,它们与 Microsoft 包冲突。此错误是混合包的结果。

因此,您需要选择要使用的那个,并确保它们不会混在一起。就个人而言,我决定坚持使用 Microsoft 软件包。

首先,删除所有现有包以进入干净状态:

sudo apt remove dotnet*
sudo apt remove aspnetcore*
sudo apt remove netstandard*

然后,在 /etc/apt/preferences.d (我命名为 99microsoft-dotnet )中创建一个文件,内容如下:

Package: *
Pin: origin "packages.microsoft.com"
Pin-Priority: 1001

然后,定期更新和安装:

sudo apt update
sudo apt install dotnet-sdk-6.0

如果您更愿意使用官方 Ubuntu 软件包,请执行与上述相同的操作,但不要创建 /etc/apt/preferences.d 条目,只需删除 Microsoft 存储库:

sudo rm /etc/apt/sources.list.d/microsoft-prod.list

但是,请注意,Microsoft 存储库包含其他包,例如 PowerShell、SQL Server 命令行工具等,因此可能不希望将其删除。

此处提供有关此问题和各种解决方案的更多信息:


答案:

作者头像

我有同样的错误,我确实使用微软软件包安装了 .Net。我认为问题在于您是否有较旧的 .Net 或关于 Ubuntu 包和 .Net 包的混合场景(f.x 通过 Jammy 或 PMC)。顺便说一句,我解决了我的问题以坚持使用 Ubuntu 软件包并运行了这个 bash 脚本:

# First, try to remove/uninstall older .Net, if any, then install .Net 6
echo "$(tput setaf 3)Installing .Net 6$(tput sgr0)"
sudo apt remove 'dotnet*'
sudo apt remove 'aspnetcore*'
sudo apt remove 'netstandard*'
sudo rm /etc/apt/sources.list.d/microsoft-prod.list
sudo rm /etc/apt/sources.list.d/microsoft-prod.list.save
sudo apt update
sudo apt install dotnet6
作者头像

当我使用 Ubuntu Jammy 创建一个新的 VS Code Dev Container 并选择“dotnet CLI”功能时,我遇到了这个错误。我最终将我的 Dev Container 切换为使用 Focal,问题就消失了。