From b1c3783578fae43f907e817b7676e7d3c9208245 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Wed, 12 Aug 2026 16:39:59 -0400 Subject: [PATCH] fix(scripts): memoize missing-assembly resolution on the design-time compile gate --- .../RoslynScriptCompiler.cs | 1 + .../RoslynScriptCompilerTests.cs | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/RoslynScriptCompiler.cs b/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/RoslynScriptCompiler.cs index d858ce3e..e1c2a866 100644 --- a/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/RoslynScriptCompiler.cs +++ b/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/RoslynScriptCompiler.cs @@ -65,6 +65,7 @@ public static class RoslynScriptCompiler var options = ScriptOptions.Default .WithReferences(references) + .WithMetadataResolver(CachingScriptMetadataResolver.Instance) .WithImports(imports); var script = CSharpScript.Create(code, options, globalsType); diff --git a/tests/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.Tests/RoslynScriptCompilerTests.cs b/tests/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.Tests/RoslynScriptCompilerTests.cs index c22a18ba..90b2bcfb 100644 --- a/tests/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.Tests/RoslynScriptCompilerTests.cs +++ b/tests/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.Tests/RoslynScriptCompilerTests.cs @@ -138,4 +138,11 @@ public class RoslynScriptCompilerTests var diagnostics = RoslynScriptCompiler.Compile(code, typeof(ScriptCompileSurface)); Assert.Empty(diagnostics); } + + [Fact] + public void Compile_TwiceWithSharedResolver_StillCompilesCleanly() + { + Assert.Empty(RoslynScriptCompiler.Compile("return 1 + 1;")); + Assert.Empty(RoslynScriptCompiler.Compile("return 2 + 2;")); + } }