Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono-addins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLluis Sanchez <lluis@xamarin.com>2013-07-16 23:39:40 +0400
committerLluis Sanchez <lluis@xamarin.com>2013-07-16 23:39:40 +0400
commitf1363fb747c7233de2fd5f92fba2200f3b3e1f21 (patch)
tree2d5a3c36ad24a5d3163a84385b2bc077bf89d8a9 /Mono.Addins.CecilReflector
parent3dcdc3af421d3392fc762594b10eb8e087e66c6a (diff)
Fix assembly resolution issue
Diffstat (limited to 'Mono.Addins.CecilReflector')
-rw-r--r--Mono.Addins.CecilReflector/Mono.Addins.CecilReflector/Reflector.cs13
1 files changed, 12 insertions, 1 deletions
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;