mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-22 10:04:44 +01:00
Use custom plugin assembly load context
This commit is contained in:
33
Emby.Server.Implementations/Plugins/PluginLoadContext.cs
Normal file
33
Emby.Server.Implementations/Plugins/PluginLoadContext.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.Loader;
|
||||
|
||||
namespace Emby.Server.Implementations.Plugins;
|
||||
|
||||
/// <summary>
|
||||
/// A custom <see cref="AssemblyLoadContext"/> for loading Jellyfin plugins.
|
||||
/// </summary>
|
||||
public class PluginLoadContext : AssemblyLoadContext
|
||||
{
|
||||
private readonly AssemblyDependencyResolver _resolver;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="PluginLoadContext"/> class.
|
||||
/// </summary>
|
||||
/// <param name="path">The path of the plugin assembly.</param>
|
||||
public PluginLoadContext(string path) : base(true)
|
||||
{
|
||||
_resolver = new AssemblyDependencyResolver(path);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override Assembly? Load(AssemblyName assemblyName)
|
||||
{
|
||||
var assemblyPath = _resolver.ResolveAssemblyToPath(assemblyName);
|
||||
if (assemblyPath is not null)
|
||||
{
|
||||
return LoadFromAssemblyPath(assemblyPath);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user