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);