Support module dependencies from non-app directory

This commit is contained in:
2021-12-30 23:42:41 +04:00
parent f99d858994
commit c5e35a2ec5
+19 -4
View File
@@ -164,14 +164,29 @@ namespace Kruzya.TelegramBot.Core
appDomain.AssemblyResolve += delegate(object? sender, ResolveEventArgs args) appDomain.AssemblyResolve += delegate(object? sender, ResolveEventArgs args)
{ {
var basePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var assemblyName = new AssemblyName(args.Name).Name + ".dll";
var assemblyPath = Path.Combine(basePath, new AssemblyName(args.Name).Name + ".dll");
if (!File.Exists(assemblyPath)) var possiblePaths = new List<string>();
if (args.RequestingAssembly != null)
{ {
return null; var modulePath = Path.GetDirectoryName(args.RequestingAssembly.Location);
possiblePaths.Add(modulePath);
possiblePaths.Add(args.RequestingAssembly.Location.Replace(".dll", ""));
} }
possiblePaths.Add(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
possiblePaths.Add(Environment.CurrentDirectory);
foreach (var basePath in possiblePaths)
{
var assemblyPath = $"{basePath}/{assemblyName}";
if (File.Exists(assemblyPath))
{
return Assembly.LoadFrom(assemblyPath); return Assembly.LoadFrom(assemblyPath);
}
}
return null;
}; };
} }
} }