为什么 ASP.NET Core 运行时无法识别已安装的 SDK?

问题描述 投票:0回答:2

我已经从 https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu 网站安装了 dotnet 的运行时和 sdk 版本 7.0。运行时 - 我认为 - 工作正常,但另一方面,当我运行此命令时,SDK 不会显示:

dotnet --list-sdks

它没有显示任何内容,当我运行此命令时:

dotnet --info

如图所示:

Host:
  Version:      7.0.5
  Architecture: x64
  Commit:       (some hex value)

.NET SDKs installed:
  No SDKs were found.

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.16 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.16 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  DOTNET_ROOT       [/usr/share/dotnet]

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

我什至给了sudo权限,仍然没有显示任何SDK。

我使用的是 Ubuntu 22.04

地点: SDK:/usr/share/dotnet。/usr/share/dotnet里面,三个目录:

-sdk 
-sdk-manifests
-templates

运行时:/usr/lib/dotnet。/usr/lib/dotnet中,三个目录和三个文件:

-host 
-packs 
-shared 

-dotnet  -executable-
-LICENSE.txt
-ThirdPartyNotices.txt

我已完成的步骤: 1.

# Get Ubuntu version
declare repo_version=$(if command -v lsb_release &> /dev/null; then lsb_release -r -s; else grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"'; fi)

# Download Microsoft signing key and repository
wget https://packages.microsoft.com/config/ubuntu/$repo_version/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

# Install Microsoft signing key and repository
sudo dpkg -i packages-microsoft-prod.deb

# Clean up
rm packages-microsoft-prod.deb

# Update packages
sudo apt update
apt install dotnet-sdk-7.0.

我没有手动安装runtime 7.0,它是使用命令自动安装的:

apt install dotnet-sdk-7.0.
  • 我尝试将DOTNET_ROOTPATH环境变量更改为sdk的位置:/usr/share/dotnet。期望它能够识别sdk的位置,但是没有成功。

  • 安装了不同的sdk版本(6.0),仍然没有显示。

  • 重新安装了runtime和sdk,还是没有出现。

c# asp.net .net ubuntu ubuntu-22.04
2个回答
0
投票

我不太确定,但我的机器上似乎有一些程序与我正在安装的 SDK 发生冲突,我应该给予“packages.microsoft.com/”更高的优先级,以避免冲突。 stackoverflow 上另一位用户给出的这个答案对我有用:

https://stackoverflow.com/a/73360096/21749839


0
投票

我在 Linux Mint Linux Mint 21.3 Cinnamon 上也遇到了类似的问题:

问题: 使用 NET8 的脚本安装一切正常,但是当我安装 NET7 时,使用 dotnet --info 没有显示运行时。

问题根源: 这是安装之间冲突的问题。

解决方案: 我发现博客上的这篇文章非常有用,所有功劳都归功于 oxla.io 的作者 Dare Omotosho

https://oxla.io/how-to-resolve-usr-share-dotnet-host-fxr-does-not-exist-for-dotnet/?unapproved=1222&moderation-hash=b8e83908fdeb5045adb359bc91f79100#comment-1222

Dare 最详细地描述了这个问题。 我必须简单做的事情:

  1. 我首先要删除所有以前安装的 dotnet 版本 (以及我在手动、脚本、安装 ubuntu 和微软包管理器之间所做的混乱)

找到 /home/xxxx -name 'dotnet' 2>/dev/null

此命令对于查找 dotnet 安装位置很有用。

  1. 然后再次使用以下命令安装 NET 7:

sudo apt-get install -y dotnet-sdk-7.0 如此处所述 然后是 NET 8(相同的命令)

不要忘记更新 bashrc 上的 DOTNET_ROOT。

希望对你有帮助

© www.soinside.com 2019 - 2024. All rights reserved.