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 ; }