Mutating Algorithm
Mutating Algorithm

Reputation: 2758

Rider cannot detect .NET core installation on Ubuntu

As instructed by the Rider IDE, I installed the .NET Core framework from Microsoft. I know that the installation was successful since I am able to run the dotnet command from my terminal. However, after restarting Rider, I still get the following message:

Cannot detect .NET Core. Please install .NET Core and restart Rider.

Am I doing anything wrong?

Upvotes: 20

Views: 26940

Answers (10)

Mikkel
Mikkel

Reputation: 3304

The root cause, in my case, was leftover configuration files from a previous installation of dotnet-sdk from the Ubuntu repositories. I had removed them and installed the packages from the Microsoft packages repository. But I had not completely removed them.

The cause was incorrect paths set in /etc/dotnet/install_location and /etc/dotnet/install_location_x64

The solution was to run sudo apt-get purge dotnet-host-8.0

I was put on track to this solution by this answer from Amjad Abujamous. He was nice enough to include a link to his source, where I found an explanation of the root cause: youtrack.jetbrains.com

Upvotes: 0

Piotrek
Piotrek

Reputation: 11211

In my case despite installing dotnet-sdk-7.0 and dotnet --version command returning correct version, I've been seeing no SDK in dotnet --info.

The problem was that I had dotnet packages installed from different sources. There are a few sources you can download dotnet package: official Ubuntu feed and Microsoft feed. I wanted to use Microsoft feed, as it provided newer versions of dotnet for my distro version, but actually used both.

Here is how you can list all your dotnet packages:

sudo apt list --installed | grep dotnet

Here is how you can check source of your packages:

sudo apt policy dotnet-sdk-7.0

How to fix it

You just need to follow this docs. You need to get rid of official Ubuntu packages and install all of them from one source.

So: Remove all dotnet packages:

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

Create files for apt preferences:

touch /etc/apt/preferences

Inside this file, paste this text. It will configure APT to ignore packages with those names in specific package source:

Package: dotnet* aspnet* netstandard*
Pin: origin "<your-package-source>"
Pin-Priority: -10

So if you configure it like this:

Package: dotnet* aspnet* netstandard*
Pin: origin "archive.ubuntu.com"
Pin-Priority: -10

It will ignore packages from archive.ubuntu.com. So when you install dotnet-sdk-7.0 again, it will omit archive.ubuntu.com and install it from Microsoft source.

You may have different package sources, depending on distro, you can check it like this:

sudo cat /etc/apt/sources.list.d/official-package-repositories.list

Upvotes: 1

blaz
blaz

Reputation: 4068

Neither reinstallation nor path opt/lib64/dotnet works for me.

I have to use the path /var/run/host/usr/lib64/dotnet for .NET cli executable path SDK instead.

Source: https://github.com/flathub/com.jetbrains.Rider/issues/36#issuecomment-1154737584

Upvotes: 0

Amjad Abujamous
Amjad Abujamous

Reputation: 920

Solution adapted from this answer on YouTrack.

Add the DOTNET_ROOT environment variable in the file launchsettings.json. In my case, it was: "DOTNET_ROOT": "/usr/share/dotnet"

Upvotes: 4

My solution was run command dotnet new console on root of project. Then, the templates are showed.

Upvotes: 1

Frikster
Frikster

Reputation: 2865

None of these worked for me. I am on PopOS and found a solution here shown in the below screenshot. I think in general it is still a bad idea to install anything from Jetbrains through the Snap store. I've had issues with Intellij and Pycharm as well dating back to ~2014 that were immediately resolved by not using the Snap store.

enter image description here

Upvotes: 2

Xymanek
Xymanek

Reputation: 1389

I made the rather silly mistake of installing .NET Core runtime but forgetting about .NET Core SDK (so the dotnet tool still worked). Once I actually installed the SDK, Rider instantly detected it (.NET 3.1 and Rider 2019.3).

The suggestion to use dotnet --info by masterwok quickly highlights this issue though.

Upvotes: 0

masterwok
masterwok

Reputation: 5131

I was just experiencing this issue due to a botched install of Xamarin Android on Arch Linux and was able to resolve it by doing the following:

First execute dotnet --info to get the path of .NET Core SDKs installed:

.NET Core SDK (reflecting any global.json): Version: 2.1.500
Commit: b68b931422

Runtime Environment: OS Name: arch OS Version: OS Platform:
Linux RID: arch-x64 Base Path: /opt/dotnet/sdk/2.1.500/

Host (useful for support): Version: 2.1.6 Commit: 3f4f8eebd8

.NET Core SDKs installed:
2.1.500 [/opt/dotnet/sdk]

.NET Core runtimes installed: Microsoft.NETCore.App 2.1.6
[/opt/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download

Up one directory at /opt/dotnet/ there should be an executable named "dotnet." The absolute path to this file (/opt/dotnet/dotnet) should be set as the .NET Core CLI executable path value under FileSettingsBuild, Execution, DeploymentToolset and Build settings in Rider.

Just in case, here are my other toolset configuration settings:

Mono executable path: /usr/bin/mono

Use MSBuild version: Auto detected (15,0), /usr/lib/mono/msbuild/bin/MSBuild.dll

I also have the following values added to my PATH in .bashrc due to an error I received regarding Razor not being found:

export MSBuildSDKsPath=/opt/dotnet/sdk/$(dotnet --version)/Sdks

export PATH=${PATH}:${MSBuildSDKsPath}

Upvotes: 8

Mikhail Filippov
Mikhail Filippov

Reputation: 818

You can set up the path to .NET CLI in Rider settings: menu File* → SettingsBuild, Execution, DeploymentToolset and Build. But usually Rider should auto detect it.

Please check what you have dotnet in your PATH. Pay attention; you should restart Rider after installing the .NET Core SDK.

Upvotes: 1

Arialdo Martini
Arialdo Martini

Reputation: 4567

I managed to fix the issue setting

/opt/dotnet/dotnet

in

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

enter image description here

Previously, I was using /usr/bin/dotnet, but it doesn't work anymore. Also, auto detect seems to be broken.

Actually, /usr/bin/dotnet, the path returned by which dotnet, is just a shell file defering to /opt/dotnet/dotnet, as its content is:

#!/bin/sh

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

# vim: ts=2 sw=2 et:

Upvotes: 28

Related Questions