mirror of
https://github.com/azaion/annotations.git
synced 2026-04-22 09:36:30 +00:00
29 lines
958 B
C#
29 lines
958 B
C#
using System.IO;
|
|
using System.Reflection;
|
|
using System.Runtime.Loader;
|
|
using Azaion.Suite.Services.DTO;
|
|
using Microsoft.Extensions.Options;
|
|
|
|
namespace Azaion.Suite;
|
|
|
|
public class DynamicAssemblyLoader(IOptions<LocalFilesConfig> localFilesConfig) : AssemblyLoadContext
|
|
{
|
|
private static readonly Dictionary<string?, Assembly> LoadedAssemblies = new();
|
|
|
|
static DynamicAssemblyLoader()
|
|
{
|
|
LoadedAssemblies = Default.Assemblies.ToDictionary(a => a.GetName().Name, a => a);
|
|
}
|
|
|
|
protected override Assembly Load(AssemblyName assemblyName)
|
|
{
|
|
var assembly = LoadedAssemblies.GetValueOrDefault(assemblyName.Name);
|
|
if (assembly != null)
|
|
return assembly;
|
|
|
|
var currentLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!;
|
|
|
|
var asm = Assembly.LoadFile(Path.Combine(currentLocation, localFilesConfig.Value.DllPath, $"{assemblyName.Name!}.dll"));
|
|
return asm;
|
|
}
|
|
} |