OpenRA / ra2

A Red Alert 2 mod for the OpenRA game engine
GNU General Public License v3.0
973 stars 161 forks source link

Could not load file or assembly 'System.Reflection.Metadata on Arch Linux #779

Closed kridtakarn closed 3 years ago

kridtakarn commented 3 years ago

I have problem with

kridtakarn  ~  ra2  make
make[1]: Entering directory '/home/kridtakarn/ra2/engine'
make[1]: Leaving directory '/home/kridtakarn/ra2/engine'
make[1]: Entering directory '/home/kridtakarn/ra2/engine'
It was not possible to find any installed .NET SDKs.
Install a .NET SDK from:
  https://aka.ms/dotnet-download
It was not possible to find any installed .NET SDKs.
Install a .NET SDK from:
  https://aka.ms/dotnet-download
/usr/lib/mono/msbuild/Current/bin/Microsoft.Common.CurrentVersion.targets(2218,5): error MSB3248: Parameter "AssemblyFiles" has invalid value "/usr/lib/mono/4.6.1-api/mscorlib.dll". Could not load file or assembly 'System.Reflection.Metadata, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. [/home/kridtakarn/ra2/engine/OpenRA.PostProcess/OpenRA.PostProcess.csproj]
make[1]: *** [Makefile:155: core] Error 1
make[1]: Leaving directory '/home/kridtakarn/ra2/engine'
make: *** [Makefile:111: engine] Error 2

please help me

Mailaender commented 3 years ago

Try reading the error message yourself:

It was not possible to find any installed .NET SDKs. Install a .NET SDK from: https://aka.ms/dotnet-download

kridtakarn commented 3 years ago

Still have problem

kridtakarn  ~  ra2  make
make[1]: Entering directory '/home/kridtakarn/ra2/engine'
make[1]: Leaving directory '/home/kridtakarn/ra2/engine'
make[1]: Entering directory '/home/kridtakarn/ra2/engine'
/usr/lib/mono/msbuild/Current/bin/Microsoft.Common.CurrentVersion.targets(2218,5): error MSB3248: Parameter "AssemblyFiles" has invalid value "/usr/lib/mono/4.6.1-api/mscorlib.dll". Could not load file or assembly 'System.Reflection.Metadata, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. [/home/kridtakarn/ra2/engine/OpenRA.PostProcess/OpenRA.PostProcess.csproj]
make[1]: *** [Makefile:155: core] Error 1
make[1]: Leaving directory '/home/kridtakarn/ra2/engine'
make: *** [Makefile:111: engine] Error 2
Mailaender commented 3 years ago

Could be because @penev92 put the repository in a broken state. I don't see any CI checks running. See if https://github.com/OpenRA/ra2/pull/778 fixes it for you.

penev92 commented 3 years ago

Broken how exactly? Engine is aligned to release-20200503 and the SDK scripts are aligned to the exact corresponding version. Everything builds & runs and there are no CI checks because Travis is dead. I would recommend going for the updated version of #778, but this sounds more to me like the broken mono situation. @Kridtakarn see if any of this helps:

ubuntu doesn't have msbuild at all you need to follow https://www.mono-project.com/download/stable/#download-lin-ubuntu those instructions are linked from openra's installation documentation but not mods if you add the mono repository and then update/install mono-devel it should hopefully just work

Also note that you can't use .NET 5 or .NET Core. The current version of the mod is still at .NET 4.6.1! So you need Mono on Linux.

kridtakarn commented 3 years ago

How can i downgrade my .NET to 4.6.1 with mono?

im using Arch Linux not Ubuntu. It is rolling-release distribution and all of packages or repositories always change to its latest version or latest arch-maintained. There are Mono and MSBuild in Arch Linux as an official repository.

penev92 commented 3 years ago

As far as I understand from the Mono website, the latest version of it should be compatible with both .NET Framework 4.6 and 4.7, so get the latest Mono.

Mailaender commented 3 years ago

Try https://aur.archlinux.org/packages/openra-ra2-git

kridtakarn commented 3 years ago

[SOLVED] Arch linux have broken Mono official repository.

I solved the problem. Arch have broken Mono official repository. Its maintainer is bad. This is my command for solve it. I recommended it for other Arch users who want to build OpenRA/RA2 until its maintainer will solve it.

mkdir -p /tmp/mono-deb
cd /tmp/mono-deb                                             
curl https://download.mono-project.com/repo/ubuntu/pool/main/m/mono/mono-roslyn_6.12.0.147-0xamarin17+ubuntu2004b1_all.deb > mono.deb                          
ar p mono.deb data.tar.xz | tar xJf - ./usr/lib/mono/4.5/System.Reflection.Metadata.dll --strip-components 5
sudo mv /usr/lib/mono/4.5/System.Reflection.Metadata.dll /usr/lib/mono/4.5/System.Reflection.Metadata.dll_OLD
sudo cp System.Reflection.Metadata.dll /usr/lib/mono/4.5

For more information. https://github.com/KSP-CKAN/CKAN/issues/3361