Rider无法在Ubuntu上检测到.NET Core安装。

18

根据Rider IDE的指示,我安装了来自Microsoft的.NET Core框架。我知道安装成功了,因为我能够从终端运行dotnet命令。然而,在重启Rider之后,我仍然收到以下消息:

无法检测到.NET Core。请安装.NET Core并重新启动Rider。

我做错了什么吗?

9个回答

25

我成功解决了设置问题。

/opt/dotnet/dotnet
Settings | Build,Execution,Deployment |
  Toolset and Build | .NET Core CLI executable path

输入图像描述

之前我一直在使用/usr/bin/dotnet,但现在它不再起作用了。而且自动检测似乎也出了故障。

实际上,/usr/bin/dotnetwhich dotnet返回的路径,只是一个指向/opt/dotnet/dotnet的shell文件,其内容如下:

#!/bin/sh

export DOTNET_ROOT=/opt/dotnet
exec /opt/dotnet/dotnet $@

# vim: ts=2 sw=2 et:

8

我刚才因为在Arch Linux上安装Xamarin Android出了问题,但是通过以下步骤解决了这个问题:

首先执行dotnet --info以获取已安装的.NET Core SDK路径:

.NET Core SDK(反映任何global.json):版本:2.1.500 提交:b68b931422
运行时环境:操作系统名称:arch 操作系统版本: 操作系统平台: Linux RID:arch-x64 基本路径:/opt/dotnet/sdk/2.1.500/
主机(用于支持):版本:2.1.6 提交:3f4f8eebd8
已安装的.NET Core SDK:
2.1.500 [/opt/dotnet/sdk]
已安装的.NET Core运行时:Microsoft.NETCore.App 2.1.6 [/opt/dotnet/shared/Microsoft.NETCore.App]
要安装其他.NET Core运行时或SDK,请参见https://aka.ms/dotnet-download
/opt/dotnet/目录上一级应该有一个名为"dotnet"的可执行文件。将此文件的绝对路径(/opt/dotnet/dotnet)设置为Rider中文件设置生成、执行、部署工具集和生成设置下的.NET Core CLI可执行文件路径值。
为了防止意外情况,以下是我的其他工具集配置设置: Mono可执行文件路径:/usr/bin/mono 使用MSBuild版本:自动检测(15.0),/usr/lib/mono/msbuild/bin/MSBuild.dll
由于出现 Razor未找到的错误,我还将以下值添加到了.bashrc中的PATH中:

将MSBuildSDKsPath导出为/opt/dotnet/sdk/$(dotnet --version)/Sdks

将PATH设置为${PATH}:${MSBuildSDKsPath}


2
这些都对我没有用。我使用的是PopOS,并在下面的截图中找到了解决方法。我认为一般来说,从Snap商店安装Jetbrains的任何东西仍然是一个坏主意。我曾经遇到过Intellij和Pycharm的问题,时间可以追溯到大约2014年,不再使用Snap商店后,问题立即得到了解决。

enter image description here


1
使用 flatpak 安装,出现了类似的问题。然后使用 JetBrains Toolbox 安装,就解决了。 - SandRock

2

this answer on YouTrack中借鉴的解决方案。

在文件launchsettings.json中添加DOTNET_ROOT环境变量。在我的情况下,它是: "DOTNET_ROOT": "/usr/share/dotnet"


1
你可以在Rider设置中设置.NET CLI的路径:菜单文件* → 设置 → 构建、执行、部署 → 工具集和构建。但通常情况下,Rider应该会自动检测到它。
请检查你的PATH中是否有dotnet。注意:安装.NET Core SDK后,你应该重新启动Rider。

1
@Philippe,我在尝试让Xamarin.Android工作后,在Arch上遇到了同样的问题。你找到了解决这个问题的方法吗? - masterwok
同样在Arch上,我降级到了以前的dotnet版本(2.1.5),现在它们已经显示出来了。 - Philippe
1
在Arch上,我使用DotNet(2.1.500)和Rider(2018.2.3)来管理@masterwok,通过在“设置/构建、执行、部署/工具集和构建/.NET Core CLI可执行路径”中指定“/opt/dotnet/dotnet”来解决问题。 - Arialdo Martini

1
我的解决方案是在项目的根目录上运行命令dotnet new console。然后,模板会显示出来。

0

0

我犯了一个非常愚蠢的错误,安装了.NET Core 运行时,但忘记了.NET Core SDK(所以dotnet工具仍然可以使用)。一旦我实际安装了SDK,Rider立即检测到它(.NET 3.1和Rider 2019.3)。

使用dotnet --infoby masterwok的建议很快就能突出这个问题。


0

在我的情况下,尽管安装了dotnet-sdk-7.0并且dotnet --version命令返回了正确的版本,但在dotnet --info中却看不到任何SDK。

问题是我从不同的来源安装了dotnet软件包。你可以从几个来源下载dotnet软件包:官方Ubuntu源和微软源。我想使用微软源,因为它为我的发行版提供了更新的dotnet版本,但实际上两者都被使用了。

以下是如何列出所有dotnet软件包的方法:

sudo apt list --installed | grep dotnet

以下是您可以查看包裹来源的方法:
sudo apt policy dotnet-sdk-7.0

如何修复

你只需要按照这个文档的步骤进行操作。你需要删除所有官方的Ubuntu软件包,并从一个来源重新安装它们。

所以: 删除所有dotnet软件包:

sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'

创建apt偏好设置文件:
touch /etc/apt/preferences

在这个文件中,粘贴以下文本。它将配置APT忽略特定软件包源中具有这些名称的软件包:
Package: dotnet* aspnet* netstandard*
Pin: origin "<your-package-source>"
Pin-Priority: -10

所以如果你像这样配置它:
Package: dotnet* aspnet* netstandard*
Pin: origin "archive.ubuntu.com"
Pin-Priority: -10

它将忽略来自archive.ubuntu.com的软件包。所以当你再次安装dotnet-sdk-7.0时,它将省略archive.ubuntu.com并从Microsoft源安装。
根据发行版的不同,你可能有不同的软件包来源,你可以像这样检查它:
sudo cat /etc/apt/sources.list.d/official-package-repositories.list

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接