From 0a91b896943cde7cd2e3c63fc6ae9993787b28c5 Mon Sep 17 00:00:00 2001 From: Evil Factory <36804725+evilfactory@users.noreply.github.com> Date: Sun, 8 Feb 2026 21:29:31 -0300 Subject: [PATCH] Add publicized assemblies to metadata references --- .../_Services/PluginManagementService.cs | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginManagementService.cs index dc757b23e..6f44d9ed4 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginManagementService.cs @@ -72,10 +72,10 @@ public class PluginManagementService : IAssemblyManagementService private static readonly SyntaxTree BaseAssemblyImports = CSharpSyntaxTree.ParseText( new StringBuilder() .AppendLine("global using LuaCsHook = Barotrauma.LuaCs.Compatibility.ILuaCsHook;") - .AppendLine("using System.Reflection;") - .AppendLine("using Barotrauma;") - .AppendLine("using Barotrauma.LuaCs;") - .AppendLine("using Barotrauma.LuaCs.Compatibility;") + .AppendLine("global using System.Reflection;") + .AppendLine("global using Barotrauma;") + .AppendLine("global using Barotrauma.LuaCs;") + .AppendLine("global using Barotrauma.LuaCs.Compatibility;") .AppendLine("using System.Runtime.CompilerServices;") .AppendLine("[assembly: IgnoresAccessChecksTo(\"BarotraumaCore\")]") #if CLIENT @@ -559,10 +559,32 @@ public class PluginManagementService : IAssemblyManagementService #if !DEBUG throw new NotImplementedException($"Needs to use publicized barotrauma assemblies and cache metadata."); #endif + var publicizedDir = Path.Combine(Directory.GetCurrentDirectory(), "Publicized"); + + string[] publicizedAssemblies = + { +#if CLIENT + "Barotrauma", +#elif SERVER + "DedicatedServer", +#endif + "BarotraumaCore" + }; + + var publicizedRefs = publicizedAssemblies + .Select(name => Path.Combine(publicizedDir, $"{name}.dll")) + .Where(File.Exists) + .Select(path => MetadataReference.CreateFromFile(path)); + + var runtimeRefs = AppDomain.CurrentDomain.GetAssemblies() + .Where(ass => + !string.IsNullOrWhiteSpace(ass.Location) && + !publicizedAssemblies.Contains(ass.GetName().Name)) + .Select(ass => MetadataReference.CreateFromFile(ass.Location)); + return Basic.Reference.Assemblies.Net80.References.All - .Union(AppDomain.CurrentDomain.GetAssemblies() - .Where(ass => !ass.Location.IsNullOrWhiteSpace()) - .Select(ass => MetadataReference.CreateFromFile(ass.Location))); + .Union(runtimeRefs) + .Union(publicizedRefs); } }