diff --git a/ChangeLog b/ChangeLog index 666db3fd7..133393cbc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-09-08 Mike Kestner + + * glib/GType.cs: beef up the referenced assembly loading code to + handle assemblies located in the same directory as the referring + assembly. Fixes #423450. + 2008-09-05 Andrés G. Aragoneses Fixes BNC#387220. diff --git a/glib/GType.cs b/glib/GType.cs index cb7ed7f83..57cf8741f 100755 --- a/glib/GType.cs +++ b/glib/GType.cs @@ -24,6 +24,7 @@ namespace GLib { using System; using System.Collections; + using System.IO; using System.Reflection; using System.Runtime.InteropServices; @@ -158,13 +159,19 @@ namespace GLib { visited [asm] = asm; Type result = asm.GetType (type_name); - if (result == null) + if (result == null) { + string asm_dir = Path.GetDirectoryName (asm.Location); foreach (AssemblyName ref_name in asm.GetReferencedAssemblies ()) { - Assembly ref_asm = Assembly.Load (ref_name); + Assembly ref_asm; + if (File.Exists (Path.Combine (asm_dir, ref_name.Name + ".dll"))) + ref_asm = Assembly.LoadFrom (Path.Combine (asm_dir, ref_name.Name + ".dll")); + else + ref_asm = Assembly.Load (ref_name); result = FindTypeInReferences (type_name, ref_asm, visited); if (result != null) break; } + } return result; }