godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.61k stars 21.1k forks source link

"Unable to load .NET runtime, specifically hostfxr." when launching. #75186

Open KRC2000 opened 1 year ago

KRC2000 commented 1 year ago

Godot version

4.0.1

System information

Linux Mint 21.1 Vera base: Ubuntu 22.04 jammy

Issue description

When launching Godot 4.0.1 .NET an error screen is shown: image dotnet is installed, included in the path: image image

Steps to reproduce

Download https://github.com/godotengine/godot/releases/download/4.0.1-stable/Godot_v4.0.1-stable_mono_linux_x86_64.zip Run on the Linux system with installed dotnet

Minimal reproduction project

None

KRC2000 commented 1 year ago

Just tried on my Pop_OS installation on the same machine with dotnet installed from the apt - works as intended. image

RedworkDE commented 1 year ago

Interestingly only the blog posts for pre-releases actually document this, but dotnet needs to be installed in a standard location for the install to be detected. For linux that means that the dotnet executable must be found at the path /usr/share/dotnet. IIRC it should be possible to symlink your install from that path, but I don't recall what exactly has to be linked where for things to actually work correctly.

mrombout commented 1 year ago

I ran into the same issue even when installing .NET SDK 6.0 (dotnet-sdk-6.0) from Microsoft's package repository into the standard location /usr/share/dotnet/ on Ubuntu 22.04.

Installing .NET SDK 7.0 (dotnet-sdk-7.0) instead solved the issue for me. Perhaps it's some kind of compatibility issue?

Noxiefilioxie commented 1 year ago

it was doing the same for me But i used the Debian 11 guide here https://learn.microsoft.com/en-us/dotnet/core/install/linux-debian

which helped for me

yingshaoxo commented 1 year ago

Try this:

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod 777 dotnet-install.sh 
./dotnet-install.sh --channel 7.0

export PATH="$PATH:$HOME/.dotnet"

Use microsoft script to install dotnet. It works fine.

retropele commented 1 year ago

Try this:

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod 777 dotnet-install.sh 
./dotnet-install.sh --channel 7.0

export PATH="$PATH:$HOME/.dotnet"

Use microsoft script to install dotnet. It works fine.

I installed everything according to Microsoft's instructions, got the error in the original post here. This was the only thing that got it to actually work for me - thanks :)

LeeWannacott commented 1 year ago

Following this fixed it for me: https://stackoverflow.com/questions/73753672/a-fatal-error-occurred-the-folder-usr-share-dotnet-host-fxr-does-not-exist

Noahnoah55 commented 1 year ago

Try this:

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod 777 dotnet-install.sh 
./dotnet-install.sh --channel 7.0

export PATH="$PATH:$HOME/.dotnet"

Use microsoft script to install dotnet. It works fine.

Hey sorry if this bumps the issue but I found while this did get rid of the fatal error that crashes Godot on loading a file, I was still getting a Red error saying

ERROR: The host fxr folder does not exist: /usr/share/dotnet/host/fxr

error

To fix this, you just have to set the DOTNET_ROOT environment variable so that Godot can find the fxr file.

After updating your path to include dotnet, you can simply run the following to automatically find the right directory and point DOTNET_ROOT to it.

export DOTNET_ROOT="$(dirname $(which dotnet))"

runevision commented 1 year ago

I'm getting this issue too on macOS (M1 Mac). I installed .NET runtime without changing any paths or any other settings, just clicking "Next" until finished. So whatever location Godot expects is not the one where it's installed by default.

fchamieh commented 1 year ago

I had same issue, my dotnet was installed in my home directory. Just simlinked /usr/share/dotnet -> /home/fadi/.dotnet and Goddot.NET works fine now

salciunas commented 1 year ago

I had this problem also, this article helped me: https://bobbyhadz.com/blog/fatal-error-ocurred-the-folder-usr-share-dotnet-host-fx-does-not-exist

sjkillen commented 1 year ago

Try this:

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod 777 dotnet-install.sh 
./dotnet-install.sh --channel 7.0

export PATH="$PATH:$HOME/.dotnet"

Use microsoft script to install dotnet. It works fine.

Hey sorry if this bumps the issue but I found while this did get rid of the fatal error that crashes Godot on loading a file, I was still getting a Red error saying

ERROR: The host fxr folder does not exist: /usr/share/dotnet/host/fxr

error

To fix this, you just have to set the DOTNET_ROOT environment variable so that Godot can find the fxr file.

After updating your path to include dotnet, you can simply run the following to automatically find the right directory and point DOTNET_ROOT to it.

export DOTNET_ROOT="$(dirname $(which dotnet))"

Also ran into this issue, but I fixed it with sudo ln -sT ~/.dotnet /usr/share/dotnet Note that if you installed .NET through the package manager as well there will already be files here and this won't work

raulsntos commented 8 months ago

@Schweeeeeeeeeeeeeeee Scripted installs are not recommended for setting up a development environment, their intended purpose is to use it for CI scenarios. The recommended installation method is to use your distro's package manager.

patoblando commented 8 months ago

Try this:

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod 777 dotnet-install.sh 
./dotnet-install.sh --channel 7.0

export PATH="$PATH:$HOME/.dotnet"

Use microsoft script to install dotnet. It works fine.

This fixed it for me, trying to install Godot_v4.2.1 on Kubuntu 23.10 x86_6

Rikitik commented 5 months ago

Same Issue on windows CMD "dotnet --info" works just fine for me. Godot Version 4.2.2 dotnet 6.0.413

fixed by symlinking to C:\Program Files\dotnet\ not C:\Program Files\dotnet\sdk\ as show on https://learn.microsoft.com/en-us/dotnet/core/install/how-to-detect-installed-versions?pivots=os-windows the target folder of the symlink MUST have the dotnet.exe

kongshanpai01 commented 1 week ago

add an environment variable named "DOTNET_ROOT", setting the value with your path of dotnet like "E:\Program Files.net SDK" or "/home/user_name/dotnet"(depends on your OS platform), to let Godot recongnize your customize dotnet path