35 lines
No EOL
944 B
C#
35 lines
No EOL
944 B
C#
using System.Reflection;
|
|
using System.Runtime.Loader;
|
|
|
|
namespace Ellie.Marmalade;
|
|
|
|
public class MarmaladeAssemblyLoadContext : AssemblyLoadContext
|
|
{
|
|
private readonly AssemblyDependencyResolver _resolver;
|
|
|
|
public MarmaladeAssemblyLoadContext(string folderPath) : base(isCollectible: true)
|
|
=> _resolver = new(folderPath);
|
|
|
|
// public Assembly MainAssembly { get; private set; }
|
|
|
|
protected override Assembly? Load(AssemblyName assemblyName)
|
|
{
|
|
var assemblyPath = _resolver.ResolveAssemblyToPath(assemblyName);
|
|
if (assemblyPath != null)
|
|
{
|
|
var assembly = LoadFromAssemblyPath(assemblyPath);
|
|
LoadDependencies(assembly);
|
|
return assembly;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public void LoadDependencies(Assembly assembly)
|
|
{
|
|
foreach (var reference in assembly.GetReferencedAssemblies())
|
|
{
|
|
Load(reference);
|
|
}
|
|
}
|
|
} |