◐ Shell
clean mode source ↗

Provide more info about failuers to load CLR assemblies by lostmsu · Pull Request #1076 · pythonnet/pythonnet

Expand Up @@ -137,7 +137,7 @@ private static Assembly ResolveHandler(object ob, ResolveEventArgs args) /// </summary> internal static void UpdatePath() { IntPtr list = Runtime.PySys_GetObject("path"); BorrowedReference list = Runtime.PySys_GetObject("path"); var count = Runtime.PyList_Size(list); if (count != pypath.Count) { Expand Down Expand Up @@ -199,19 +199,14 @@ public static string FindAssembly(string name) /// </summary> public static Assembly LoadAssembly(string name) { Assembly assembly = null; try { assembly = Assembly.Load(name); return Assembly.Load(name); } catch (Exception) catch (FileNotFoundException) { //if (!(e is System.IO.FileNotFoundException)) //{ // throw; //} return null; } return assembly; }

Expand All @@ -221,18 +216,8 @@ public static Assembly LoadAssembly(string name) public static Assembly LoadAssemblyPath(string name) { string path = FindAssembly(name); Assembly assembly = null; if (path != null) { try { assembly = Assembly.LoadFrom(path); } catch (Exception) { } } return assembly; if (path == null) return null; return Assembly.LoadFrom(path); }
/// <summary> Expand All @@ -242,25 +227,14 @@ public static Assembly LoadAssemblyPath(string name) /// <returns></returns> public static Assembly LoadAssemblyFullPath(string name) { Assembly assembly = null; if (Path.IsPathRooted(name)) { if (!Path.HasExtension(name)) { name = name + ".dll"; } if (File.Exists(name)) { try { assembly = Assembly.LoadFrom(name); } catch (Exception) { } return Assembly.LoadFrom(name); } } return assembly; return null; }
/// <summary> Expand Down Expand Up @@ -291,7 +265,7 @@ public static Assembly FindLoadedAssembly(string name) /// actually loads an assembly. /// Call ONLY for namespaces that HAVE NOT been cached yet. /// </remarks> public static bool LoadImplicit(string name, bool warn = true) public static bool LoadImplicit(string name, Action<Exception> assemblyLoadErrorHandler, bool warn = true) { string[] names = name.Split('.'); var loaded = false; Expand All @@ -308,14 +282,23 @@ public static bool LoadImplicit(string name, bool warn = true) assembliesSet = new HashSet<Assembly>(AppDomain.CurrentDomain.GetAssemblies()); } Assembly a = FindLoadedAssembly(s); if (a == null) { a = LoadAssemblyPath(s); } if (a == null) try { a = LoadAssembly(s); if (a == null) { a = LoadAssemblyPath(s); }
if (a == null) { a = LoadAssembly(s); } } catch (FileLoadException e) { assemblyLoadErrorHandler(e); } catch (BadImageFormatException e) { assemblyLoadErrorHandler(e); } catch (System.Security.SecurityException e) { assemblyLoadErrorHandler(e); } catch (PathTooLongException e) { assemblyLoadErrorHandler(e); }
if (a != null && !assembliesSet.Contains(a)) { loaded = true; Expand Down