pschelpdesk/Vendor/Prise/AssemblyLoading/DefaultAssemblyDependencyResolver.cs
2024-11-04 20:45:34 +01:00

53 lines
1.5 KiB
C#

using System.Reflection;
#if HAS_NATIVE_RESOLVER
using System.Runtime.Loader;
using System.IO;
#endif
namespace Prise.AssemblyLoading
{
public class DefaultAssemblyDependencyResolver : IAssemblyDependencyResolver
{
#if HAS_NATIVE_RESOLVER
protected AssemblyDependencyResolver resolver;
#endif
public DefaultAssemblyDependencyResolver(string fullPathToPluginAssembly)
{
#if HAS_NATIVE_RESOLVER
try
{
this.resolver = new AssemblyDependencyResolver(fullPathToPluginAssembly);
}
catch (System.ArgumentException ex)
{
throw new AssemblyLoadingException($"{nameof(AssemblyDependencyResolver)} could not be instantiated, possible issue with {fullPathToPluginAssembly} {Path.GetFileNameWithoutExtension(fullPathToPluginAssembly)}.deps.json file?", ex);
}
#endif
}
public string ResolveAssemblyToPath(AssemblyName assemblyName)
{
#if HAS_NATIVE_RESOLVER
return this.resolver.ResolveAssemblyToPath(assemblyName);
#endif
return null; // Not supported
}
public string ResolveUnmanagedDllToPath(string unmanagedDllName)
{
#if HAS_NATIVE_RESOLVER
return this.resolver.ResolveUnmanagedDllToPath(unmanagedDllName);
#endif
return null; // Not supported
}
public void Dispose()
{
#if HAS_NATIVE_RESOLVER
this.resolver= null;
#endif
}
}
}