diff --git a/src/runtime/assemblymanager.cs b/src/runtime/assemblymanager.cs
index 35badb71a..29add80be 100644
--- a/src/runtime/assemblymanager.cs
+++ b/src/runtime/assemblymanager.cs
@@ -208,6 +208,24 @@ public static Assembly LoadAssemblyPath(string name) {
return assembly;
}
+ ///
+ /// Loads an assembly using full path.
+ ///
+ ///
+ ///
+ 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 { }
+ }
+ }
+ return assembly;
+ }
+
//===================================================================
// Returns an assembly that's already been loaded
//===================================================================
diff --git a/src/runtime/moduleobject.cs b/src/runtime/moduleobject.cs
index 5cd6f2af5..d5dc2a562 100644
--- a/src/runtime/moduleobject.cs
+++ b/src/runtime/moduleobject.cs
@@ -409,11 +409,15 @@ public static Assembly AddReference(string name)
{
assembly = AssemblyManager.LoadAssembly(name);
}
+ if (assembly == null) {
+ assembly = AssemblyManager.LoadAssemblyFullPath(name);
+ }
if (assembly == null)
{
string msg = String.Format("Unable to find assembly '{0}'.", name);
throw new System.IO.FileNotFoundException(msg);
}
+
return assembly ;
}