.net-core - .NET Core 3.1 安装在 Fedora 32 上,但它不起作用
问题描述
dotnet 程序位于目录“/usr/bin/dotnet”中。当我切换到该目录并运行 dotnet new web 时,我得到的只是:
找不到任何已安装的 .NET Core SDK 您是要运行 .NET Core SDK 命令吗?从以下位置安装 .NET Core SDK:> https://aka.ms/dotnet-download
建议?
解决方案
当我切换到那个目录
不要dotnet new
从/usr/bin
目录中运行。里面有一个指向实际二进制文件的符号链接,以便它在您的 PATH 中可用。所以/usr/bin/dotnet
可能会指向一个位置,例如/usr/lib64/dotnet/dotnet
. 您应该能够dotnet
从您的用户有权访问的任何位置运行。
dotnet-sdk-3.1
问题可能与现在在官方的 fedora 存储库和 microsoft 存储库中可用的事实有关,因此您可能混合了不兼容的二进制文件。
我今天遇到了类似的问题,我安装了以下类似的软件包:
dotnet-apphost-pack-3.1 x86_64 3.1.8-1.fc32 @updates
dotnet-host x86_64 3.1.8-1.fc32 @updates
dotnet-hostfxr-3.1 x86_64 3.1.8-1.fc32 @updates
dotnet-runtime-3.1 x86_64 3.1.8-1.fc32 @updates
dotnet-runtime-deps-3.1 x86_64 3.1.8-1 @packages-microsoft-com-prod
dotnet-sdk-3.1 x86_64 3.1.402-1 @packages-microsoft-com-prod
dotnet-targeting-pack-3.1 x86_64 3.1.8-1.fc32 @updates
...
事实证明,我之前从 Microsoft 的 repo 安装的软件包与 Fedora 的软件包(带有 .fc32 的软件包)不能很好地配合。
为了解决这个问题,我只需要卸载我所有的 dotnet 包:sudo dnf remove dotnet-*
然后将 fedora 存储库的优先级设置为高于 microsoft。这是通过编辑受影响的存储库来完成的,例如/etc/yum.repos.d/fedora.repo
并添加:
优先级 = N (其中 N 是 1 到 99 之间的数字)
我将 Fedora 的 repos 设置为优先级 1(无论如何他们确实应该这样做),将 microsoft 的 repos 设置为 5。
然后简单地再次安装,这次它会从 Fedora repo 中下载:
sudo dnf install dotnet-sdk-3.1
现在更像是:
dotnet-sdk-3.1 x86_64 3.1.108-1.fc32 @updates
dotnet-apphost-pack-3.1 x86_64 3.1.8-1.fc32 @updates
dotnet-host x86_64 3.1.8-1.fc32 @updates
dotnet-hostfxr-3.1 x86_64 3.1.8-1.fc32 @updates
dotnet-runtime-3.1 x86_64 3.1.8-1.fc32 @updates
dotnet-targeting-pack-3.1 x86_64 3.1.8-1.fc32 @updates
...
一切正常。运行dotnet --list-sdks
输出:3.1.108 [/usr/lib64/dotnet/sdk]
推荐阅读
- python - 将字符串数组转换为日期时间数组
- qt - 最后一个空列填充 QTableView
- dart - 如何为函数参数声明自定义类型?
- php - 如何将 jQuery 变量传递给 PHP?
- html - 具有多个 html 元素的 Css 类
- listview - 从绑定 ListView Xamarin Forms 中检索 firebase 数据
- mysql - Laravel withCount 所有评论和子评论
- quantum-computing - 此量子电路后的量子比特状态(Hadamard+Eigen Operator+Hadamard)
- c# - 如何阻止文本框在 wfp 中无限扩展
- haskell - 如何在 Haskell 中执行命令列表?