53 lines
1.5 KiB
C#
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
|
|
}
|
|
}
|
|
} |