При установке .NET на линукс есть возможность использовать репозиторий либо официальный Ubuntu, либо от Microsoft (вариант со скриптом не рассматриваю)
Важный момент в том, что установка из этих 2 фидов происходит по-разному и в результате они могут конфликтовать
Принципиальное различие:
Ubuntu устанавливается в
/usr/lib/dotnet
Microsoft устанавливается в
/usr/share/dotnet
Когда я переходил из Ubuntu на Microsoft столкнулся с проблемой, что Rider, хоть и находит бинарник дотнета, не может запустить скомпилированное приложение. Выводилась ошибка следующего вида:
You must install .NET to run this application.
App: /home/user/repos/myapp/myapp
Architecture: x64
Host version: 7.0.0
.NET location: Not found
В итоге проблема оказалось следующей:
Исполняемый файл (запускаемый, не *.dll) пытается обнаружить путь до
dotnet
через переменную окруженияDOTNET_ROOT
.NET из Ubuntu устанавливает ее равной
/usr/lib/dotnet
. Но для репозитория Microsoft,dotnet
устанавливается в/usr/share/dotnet
. После установки из нового фида, переменная не обновляется
Эту проблему я решил обновив файл /etc/environment
- устанавливаю DOTNET_ROOT
вручную. Теперь файл выглядит так
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
DOTNET_ROOT="/usr/share/dotnet"
Надеюсь, помог тем, кто столкнется с этим в будущем