From 834cb9411000bf205dde61b7358b136cedf56672 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 11 May 2026 21:35:27 +0200 Subject: [PATCH] Fix loading engine managed assembly on iOS regression --- Source/Engine/Scripting/Runtime/DotNet.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Source/Engine/Scripting/Runtime/DotNet.cpp b/Source/Engine/Scripting/Runtime/DotNet.cpp index 0c1901e4b..4d5665d3b 100644 --- a/Source/Engine/Scripting/Runtime/DotNet.cpp +++ b/Source/Engine/Scripting/Runtime/DotNet.cpp @@ -2083,10 +2083,23 @@ static MonoAssembly* OnMonoAssemblyLoad(const char* aname) LOG(Info, "Loading C# assembly from path = {0}, exist = {1}", path, FileSystem::FileExists(path)); #endif MonoAssembly* assembly = nullptr; + MonoImageOpenStatus status = MONO_IMAGE_IMAGE_INVALID; if (FileSystem::FileExists(path)) { StringAnsi pathAnsi(path); - assembly = mono_assembly_open(pathAnsi.Get(), nullptr); +#if PLATFORM_IOS + Array data; + File::ReadAllBytes(path, data); + const auto name = path.ToStringAnsi(); + const auto assemblyImage = mono_image_open_from_data_with_name(reinterpret_cast(data.Get()), data.Count(), true, &status, false, name.Get()); + if (assemblyImage) + { + assembly = mono_assembly_load_from_full(assemblyImage, name.Substring(0, name.Length() - 3).Get(), &status, false); + mono_image_close(assemblyImage); + } +#else + assembly = mono_assembly_open(pathAnsi.Get(), &status); +#endif } if (!assembly) {