diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaXamlIlRuntimeCompiler.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaXamlIlRuntimeCompiler.cs index b66e006ad6..75bf42a04c 100644 --- a/src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaXamlIlRuntimeCompiler.cs +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaXamlIlRuntimeCompiler.cs @@ -74,6 +74,15 @@ namespace Avalonia.Markup.Xaml.XamlIl [MemberNotNull(nameof(_ignoresAccessChecksFromAttribute))] static void InitializeSre() { + // SRE backend doesn't load assemblies, unless they are already in the memory. + // At the very least, we should make sure that assemblies necessary for `AvaloniaXamlIlWellKnownTypes` are loaded. + // Root `Avalonia.Controls`. + GC.KeepAlive(typeof(Avalonia.Controls.Control)); + // Root `Avalonia.Markup`. + GC.KeepAlive(typeof(Avalonia.Data.Binding)); + // Root `System.ObjectModel` + GC.KeepAlive(typeof(System.ComponentModel.TypeConverterAttribute)); + if (_sreTypeSystem == null) _sreTypeSystem = new SreTypeSystem(); if (_sreBuilder == null) diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs b/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs index 16b3565074..d7d8d9d289 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs @@ -10,15 +10,6 @@ using Avalonia.UnitTests; namespace Avalonia.Markup.Xaml.UnitTests { - static class XamlLoaderInit - { - [ModuleInitializer] - public static void Init() - { - var _ = typeof(Binding); - } - } - public class XamlTestBase : ScopedTestBase { public XamlTestBase()