From f1363fb747c7233de2fd5f92fba2200f3b3e1f21 Mon Sep 17 00:00:00 2001 From: Lluis Sanchez Date: Tue, 16 Jul 2013 21:39:40 +0200 Subject: [PATCH] Fix assembly resolution issue --- .../Mono.Addins.CecilReflector/Reflector.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Mono.Addins.CecilReflector/Mono.Addins.CecilReflector/Reflector.cs b/Mono.Addins.CecilReflector/Mono.Addins.CecilReflector/Reflector.cs index e573c91..cabeb30 100644 --- a/Mono.Addins.CecilReflector/Mono.Addins.CecilReflector/Reflector.cs +++ b/Mono.Addins.CecilReflector/Mono.Addins.CecilReflector/Reflector.cs @@ -41,10 +41,19 @@ namespace Mono.Addins.CecilReflector { IAssemblyLocator locator; Hashtable cachedAssemblies = new Hashtable (); + DefaultAssemblyResolver defaultAssemblyResolver; public void Initialize (IAssemblyLocator locator) { this.locator = locator; + defaultAssemblyResolver = new DefaultAssemblyResolver (); + defaultAssemblyResolver.ResolveFailure += delegate (object sender, AssemblyNameReference reference) { + var file = locator.GetAssemblyLocation (reference.FullName); + if (file != null) + return LoadAssembly (file, true); + else + return null; + }; } public object[] GetCustomAttributes (object obj, Type type, bool inherit) @@ -286,7 +295,9 @@ namespace Mono.Addins.CecilReflector AssemblyDefinition adef = (AssemblyDefinition) cachedAssemblies [file]; if (adef != null) return adef; - adef = AssemblyDefinition.ReadAssembly (file); + var rp = new ReaderParameters (ReadingMode.Deferred); + rp.AssemblyResolver = defaultAssemblyResolver; + adef = AssemblyDefinition.ReadAssembly (file, rp); if (adef != null && cache) cachedAssemblies [file] = adef; return adef;