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