From 5d8cb4acaf5365e1c394c0dc93745c70bf91ad2f Mon Sep 17 00:00:00 2001 From: Ari Vuollet Date: Fri, 21 Aug 2026 16:44:31 +0300 Subject: [PATCH] Try to improve scripting assembly file loading when file is locked --- Source/Engine/Engine/NativeInterop.Unmanaged.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Source/Engine/Engine/NativeInterop.Unmanaged.cs b/Source/Engine/Engine/NativeInterop.Unmanaged.cs index cb8688dcf..d9f5729f9 100644 --- a/Source/Engine/Engine/NativeInterop.Unmanaged.cs +++ b/Source/Engine/Engine/NativeInterop.Unmanaged.cs @@ -901,20 +901,21 @@ namespace FlaxEngine.Interop Assembly assembly; #if FLAX_EDITOR - // Load assembly from loaded bytes to prevent file locking in Editor - var assemblyBytes = File.ReadAllBytes(assemblyPath); - using MemoryStream stream = new MemoryStream(assemblyBytes); + // Load assembly with stream to prevent runtime from locking the assembly file + using FileStream stream = new FileStream(assemblyPath, FileMode.Open, FileAccess.Read); var pdbPath = Path.ChangeExtension(assemblyPath, "pdb"); if (File.Exists(pdbPath)) { // Load including debug symbols - using FileStream pdbStream = new FileStream(Path.ChangeExtension(assemblyPath, "pdb"), FileMode.Open); + using FileStream pdbStream = new FileStream(Path.ChangeExtension(assemblyPath, "pdb"), FileMode.Open, FileAccess.Read); assembly = scriptingAssemblyLoadContext.LoadFromStream(stream, pdbStream); } else { assembly = scriptingAssemblyLoadContext.LoadFromStream(stream); } + + // TODO: Use new .NET 11 AssemblyLoadContext.SetAssemblyLocationOverride to specify correct Assembly.Location #else // Load assembly from file assembly = scriptingAssemblyLoadContext.LoadFromAssemblyPath(assemblyPath);