2using System.Collections.Generic;
4using System.Reflection;
6#if NETCOREAPP3_1_OR_GREATER
7using System.Runtime.Loader;
9using Microsoft.Extensions.DependencyModel;
18 internal class VfsRuntimeContext : VfsContext
21 readonly RuntimeContext context;
27 public VfsRuntimeContext(RuntimeContext context)
29 this.context = context ??
throw new ArgumentNullException(nameof(context));
35 public override RuntimeContext Context => context;
46 return AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(i => IsMatch(i.GetName(), name)) ??
Assembly.Load(name);
48 return AssemblyLoadContext.GetLoadContext(typeof(VfsRuntimeContext).
Assembly).LoadFromAssemblyName(name);
61 public override IEnumerable<AssemblyName> GetAssemblyNames()
64 return AppDomain.CurrentDomain.GetAssemblies().Select(i => i.GetName()).Distinct();
66 return AssemblyLoadContext.GetLoadContext(typeof(VfsRuntimeContext).
Assembly).Assemblies.Select(i => i.GetName());
79 if (definition.Name !=
null &&
string.Equals(definition.Name, reference.Name, StringComparison.OrdinalIgnoreCase) ==
false)
83 if (definition.Version !=
null && definition.Version != reference.Version)
87 if (definition.CultureName !=
null &&
string.Equals(definition.CultureName, reference.CultureName, StringComparison.OrdinalIgnoreCase) ==
false)
91 if (definition.GetPublicKeyToken() !=
null && definition.GetPublicKeyToken().AsSpan().SequenceEqual(reference.GetPublicKeyToken()) ==
false)
IKVM.Reflection.Assembly Assembly
IKVM.Reflection.AssemblyName AssemblyName