A fatal error occurred. The folder [/usr/share/dotnet/host/fxr] does not exist
Ubuntu 22.04 dotnet --info 更新后无法访问dotnet,重新安装dotnet和vscode也无济于事。
apt
安装dotnet的吗? 你的路径中可能有多个dotnet的实例吗?
- PMF 2022-09-17
当.NET(核心)首次在Linux上发布时,它还没有在Ubuntu的官方版本中出现。因此,我们中的许多人加入了微软的APT repo,以便安装它。
现在,这些软件包是Ubuntu repo的一部分,它们与微软的软件包发生了冲突。这个错误是混合软件包的结果。
因此,你需要选择你要使用的那一个,并确保它们不会混合。就个人而言,我决定坚持使用微软的软件包,因为我认为它们会更好地保持最新。
首先,删除所有现有的软件包,以达到一个干净的状态。
sudo apt remove dotnet*
sudo apt remove aspnetcore*
sudo apt remove netstandard*
然后,在/etc/apt/preferences.d
创建一个文件(我把我的文件命名为99microsoft-dotnet.pref
,按照惯例,这种*.d
目录中的文件通常以2位数为前缀,以便它们以可预测的顺序排序和加载),其内容如下。
Package: *
Pin: origin "packages.microsoft.com"
Pin-Priority: 1001
然后,常规的更新&安装。
sudo apt update
sudo apt install dotnet-sdk-6.0
如果你想使用Ubuntu的官方软件包,请按上述方法删除所有现有的软件包,但不要创建/etc/apt/preferences.d
条目,只需删除微软的 repo即可。
sudo rm /etc/apt/sources.list.d/microsoft-prod.list
sudo apt update
sudo apt install dotnet-sdk-6.0
然而,请注意,微软的repo包含其他软件包,如PowerShell、SQL Server Command-Line Tools等,所以删除它可能不可取。
我相信有可能使APT配置更具体到这些软件包,但目前这对我来说是可行的。希望微软和Ubuntu一起工作,尽快解决这个问题。
关于这个问题和各种解决方案的更多信息可在此获得。
dotnet
,aspnetcore
,netstandard
)应该有更高的优先级。更多关于如何配置apt
优先级的信息在这里。wiki.debian.org/AptConfiguration
- Tobias J 2022-10-27
/etc/apt/preferences.d
的文件的典型扩展名是*.pref
。因此,我将99microsoft-dotnet
改名为99microsoft-dotnet.pref
。
- Kevin 2022-11-18
试试这个解决方案https://github.com/dotnet/sdk/issues/27082#issuecomment-1211143446,对我来说,它解决了这个问题。
我也遇到了同样的错误,我确实用微软的软件包安装了.Net。我认为问题出在你使用的是旧的.Net,或者是Ubuntu包和.Net包的混合情况(通过Jammy或PMC的f.x)。BTW,我解决了我的问题,坚持使用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开发容器并选择"dotnet CLI"功能时,我遇到了这个错误。最后我把我的开发容器换成了Focal,这个问题就消失了。
我收到此错误消息后:
sudo apt install dotnet-host
这为我解决了:
sudo apt install dotnet-sdk-6.0