diff options
author | Lluis Sanchez <llsan@microsoft.com> | 2021-05-13 20:43:18 +0300 |
---|---|---|
committer | Lluis Sanchez <llsan@microsoft.com> | 2021-05-13 20:43:18 +0300 |
commit | 0d604eb2ddf4c06a5e34d6c53d095605738a9b57 (patch) | |
tree | a8f81b62c58d2c51287c48a8a481d4ba99b568b2 | |
parent | 4ae477426811bfd913e10d6940a5eec43ab07ae3 (diff) |
Test
-rw-r--r--[-rwxr-xr-x] | Mono.Addins/Mono.Addins/AddinEngine.cs | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/Mono.Addins/Mono.Addins/AddinEngine.cs b/Mono.Addins/Mono.Addins/AddinEngine.cs index d73a464..fe2c248 100755..100644 --- a/Mono.Addins/Mono.Addins/AddinEngine.cs +++ b/Mono.Addins/Mono.Addins/AddinEngine.cs @@ -262,24 +262,35 @@ namespace Mono.Addins Assembly CurrentDomainAssemblyResolve(object sender, ResolveEventArgs args) { - lock (LocalLock) { - string assemblyName = args.Name; - - if (assemblyResolvePaths.TryGetValue (assemblyName, out var inAddin)) { - if (inAddin.TryGetAssembly (assemblyName, out var assembly)) - return assembly; - - int index = inAddin.Module.AssemblyNames.IndexOf (assemblyName); - if (index != -1) { - var path = inAddin.GetFilePath (inAddin.Module.Assemblies[index]); - assembly = Assembly.LoadFrom (path); - inAddin.RegisterAssemblyLoad (assemblyName, assembly); - - return assembly; + try + { + lock (LocalLock) + { + string assemblyName = args.Name; + + if (assemblyResolvePaths.TryGetValue(assemblyName, out var inAddin)) + { + if (inAddin.TryGetAssembly(assemblyName, out var assembly)) + return assembly; + + int index = inAddin.Module.AssemblyNames.IndexOf(assemblyName); + if (index != -1) + { + var path = inAddin.GetFilePath(inAddin.Module.Assemblies[index]); + assembly = Assembly.LoadFrom(path); + inAddin.RegisterAssemblyLoad(assemblyName, assembly); + + return assembly; + } } - } - return null; + return null; + } + } + catch (Exception ex) + { + Console.WriteLine(ex); + throw; } } |