Browse Source

Root assemblies for SRE XAML loader (#18290)

* Root assemblies for SRE XAML loader

* Update XamlTestBase.cs
pull/18306/head
Maxwell Katz 12 months ago
committed by GitHub
parent
commit
5e7963b545
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 9
      src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaXamlIlRuntimeCompiler.cs
  2. 9
      tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs

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

9
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()

Loading…
Cancel
Save