From 29a2e07b1f59dd5b323e1e10dd075cefb2e1d3ce Mon Sep 17 00:00:00 2001 From: EvilFactory Date: Fri, 28 Apr 2023 14:45:45 -0300 Subject: [PATCH] Set TopLevelBinderFlags to IgnoreAccessibility for CsMods, so they are able to access non-public members by default --- .../SharedSource/LuaCs/Cs/CsScriptLoader.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptLoader.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptLoader.cs index f4ffc0945..90d858f82 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptLoader.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptLoader.cs @@ -193,7 +193,11 @@ namespace Barotrauma var options = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary) .WithMetadataImportOptions(MetadataImportOptions.All) .WithOptimizationLevel(OptimizationLevel.Release) - .WithAllowUnsafe(true); + .WithAllowUnsafe(true); + + var topLevelBinderFlagsProperty = typeof(CSharpCompilationOptions).GetProperty("TopLevelBinderFlags", BindingFlags.Instance | BindingFlags.NonPublic); + topLevelBinderFlagsProperty.SetValue(options, (uint)1 << 22); + var compilation = CSharpCompilation.Create(CsScriptAssembly, syntaxTrees, defaultReferences, options); using (var mem = new MemoryStream())