ok now it works
This commit is contained in:
@@ -1,19 +1,18 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.Loader;
|
||||
using CringeBootstrap.Abstractions;
|
||||
using SharedCringe.Loader;
|
||||
|
||||
namespace CringePlugins.Loader;
|
||||
|
||||
internal class PluginAssemblyLoadContext : AssemblyLoadContext
|
||||
internal class PluginAssemblyLoadContext : DerivedAssemblyLoadContext
|
||||
{
|
||||
private readonly ICoreLoadContext _parentContext;
|
||||
private readonly string _entrypointPath;
|
||||
private readonly AssemblyDependencyResolver _dependencyResolver;
|
||||
private Assembly? _assembly;
|
||||
|
||||
internal PluginAssemblyLoadContext(ICoreLoadContext parentContext, string entrypointPath) : base($"Plugin Context {Path.GetFileNameWithoutExtension(entrypointPath)}", true)
|
||||
internal PluginAssemblyLoadContext(ICoreLoadContext parentContext, string entrypointPath) : base(parentContext, $"Plugin Context {Path.GetFileNameWithoutExtension(entrypointPath)}")
|
||||
{
|
||||
_parentContext = parentContext;
|
||||
_entrypointPath = entrypointPath;
|
||||
_dependencyResolver = new(entrypointPath);
|
||||
}
|
||||
@@ -25,7 +24,7 @@ internal class PluginAssemblyLoadContext : AssemblyLoadContext
|
||||
if (_dependencyResolver.ResolveAssemblyToPath(assemblyName) is { } path)
|
||||
return LoadFromAssemblyPath(path);
|
||||
|
||||
return _parentContext.ResolveFromAssemblyName(assemblyName);
|
||||
return base.Load(assemblyName);
|
||||
}
|
||||
|
||||
protected override nint LoadUnmanagedDll(string unmanagedDllName)
|
||||
@@ -33,6 +32,6 @@ internal class PluginAssemblyLoadContext : AssemblyLoadContext
|
||||
if (_dependencyResolver.ResolveUnmanagedDllToPath(unmanagedDllName) is { } path)
|
||||
return LoadUnmanagedDllFromPath(path);
|
||||
|
||||
return _parentContext.ResolveUnmanagedDll(unmanagedDllName);
|
||||
return base.LoadUnmanagedDll(unmanagedDllName);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user