根据Rider IDE的指示,我安装了来自Microsoft的.NET Core框架。我知道安装成功了,因为我能够从终端运行dotnet
命令。然而,在重启Rider之后,我仍然收到以下消息:
无法检测到.NET Core。请安装.NET Core并重新启动Rider。
我做错了什么吗?
我成功解决了设置问题。
/opt/dotnet/dotnet
Settings | Build,Execution,Deployment |
Toolset and Build | .NET Core CLI executable path
之前我一直在使用/usr/bin/dotnet
,但现在它不再起作用了。而且自动检测似乎也出了故障。
实际上,/usr/bin/dotnet
是which dotnet
返回的路径,只是一个指向/opt/dotnet/dotnet
的shell文件,其内容如下:
#!/bin/sh
export DOTNET_ROOT=/opt/dotnet
exec /opt/dotnet/dotnet $@
# vim: ts=2 sw=2 et:
我刚才因为在Arch Linux上安装Xamarin Android出了问题,但是通过以下步骤解决了这个问题:
首先执行dotnet --info
以获取已安装的.NET Core SDK路径:
将MSBuildSDKsPath导出为/opt/dotnet/sdk/$(dotnet --version)/Sdks
将PATH设置为${PATH}:${MSBuildSDKsPath}
从this answer on YouTrack中借鉴的解决方案。
在文件launchsettings.json
中添加DOTNET_ROOT
环境变量。在我的情况下,它是:
"DOTNET_ROOT": "/usr/share/dotnet"
dotnet
。注意:安装.NET Core SDK后,你应该重新启动Rider。dotnet new console
。然后,模板会显示出来。opt/lib64/dotnet
对我都不起作用。/var/run/host/usr/lib64/dotnet
来设置.NET cli可执行路径SDK。我犯了一个非常愚蠢的错误,安装了.NET Core 运行时,但忘记了.NET Core SDK(所以dotnet
工具仍然可以使用)。一旦我实际安装了SDK,Rider立即检测到它(.NET 3.1和Rider 2019.3)。
使用dotnet --info
by masterwok的建议很快就能突出这个问题。
在我的情况下,尽管安装了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*'
touch /etc/apt/preferences
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