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

Vla*_*ets 119 .net ubuntu host

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

在 Ubuntu 22.04 上,运行dotnet --info会产生输出:

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

Tob*_*s J 323

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

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

因此,您需要选择要使用哪一种,并确保它们不会混合。就我个人而言,我决定坚持使用 Microsoft 软件包,因为我认为它们可以更好地保持最新状态。

首先,删除所有现有的包以达到干净的状态:

sudo apt remove dotnet* aspnetcore* netstandard*
Run Code Online (Sandbox Code Playgroud)

然后,使用以下内容创建一个文件/etc/apt/preferences.d(我将其命名为“我的” ,遵循此类目录中的文件通常以 2 位数字为前缀的99microsoft-dotnet.pref约定,以便它们以可预测的顺序排序和加载):*.d

Package: *
Pin: origin "packages.microsoft.com"
Pin-Priority: 1001
Run Code Online (Sandbox Code Playgroud)

然后,定期更新和安装(注意:这将安装 .NET SDK 7.0;如果您更喜欢 LTS 版本,请指定 6.0):

Package: *
Pin: origin "packages.microsoft.com"
Pin-Priority: 1001
Run Code Online (Sandbox Code Playgroud)

如果您想使用官方 Ubuntu 软件包,请按上述方式删除所有现有软件包,但不创建条目/etc/apt/preferences.d,只需删除 Microsoft 存储库:

sudo apt update && sudo apt install -y dotnet-sdk-7.0
Run Code Online (Sandbox Code Playgroud)

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

我确信可以使 APT 配置更具体地仅针对这些软件包,但这目前对我有用。希望微软和 Ubuntu 共同努力尽快解决这个问题。

有关该问题和各种解决方案的更多信息可在此处找到:

  • 这解决了我在 Ubuntu 22.04.1 上的问题。我还决定使用 Microsoft 软件包。 (16认同)
  • 谢谢你。MS 页面上链接的某些指南错误地指定了所需的文件位置。这确实有效。 (4认同)

小智 34

我遇到了同样的错误,并且我确实使用微软软件包安装了.Net。我认为问题在于您是否有过较旧的 .Net 或有关 Ubuntu 软件包和 .Net 软件包(通过 Jammy 或 PMC 进行FX)的混合场景。顺便说一句,我解决了我的问题,坚持使用 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
Run Code Online (Sandbox Code Playgroud)