예제 #1
0
        ExternalAssembly load(TypeReference type)
        {
            var asmFullName = DotNetUtils.getFullAssemblyName(type);
            ExternalAssembly asm;

            if (assemblies.TryGetValue(asmFullName, out asm))
            {
                return(asm);
            }

            AssemblyDefinition asmDef = null;

            try {
                asmDef = AssemblyResolver.Instance.Resolve(asmFullName);
            }
            catch (ResolutionException) {
            }
            catch (AssemblyResolutionException) {
            }
            if (asmDef == null)
            {
                if (!failedLoads.ContainsKey(asmFullName))
                {
                    Log.w("Could not load assembly {0}", asmFullName);
                }
                failedLoads[asmFullName] = true;
                return(null);
            }
            if (assemblies.ContainsKey(asmDef.Name.FullName))
            {
                assemblies[asmFullName] = assemblies[asmDef.Name.FullName];
                return(assemblies[asmDef.Name.FullName]);
            }

            if (asmFullName == asmDef.Name.FullName)
            {
                Log.v("Loaded assembly {0}", asmFullName);
            }
            else
            {
                Log.v("Loaded assembly {0} (but wanted {1})", asmDef.Name.FullName, asmFullName);
            }

            asm = new ExternalAssembly(asmDef);
            assemblies[asmFullName]          = asm;
            assemblies[asmDef.Name.FullName] = asm;
            return(asm);
        }
예제 #2
0
        ExternalAssembly load(TypeReference type)
        {
            var asmFullName = DotNetUtils.getFullAssemblyName(type);
            ExternalAssembly asm;
            if (assemblies.TryGetValue(asmFullName, out asm))
                return asm;

            AssemblyDefinition asmDef = null;
            try {
                asmDef = AssemblyResolver.Instance.Resolve(asmFullName);
            }
            catch (ResolutionException) {
            }
            catch (AssemblyResolutionException) {
            }
            if (asmDef == null) {
                if (!failedLoads.ContainsKey(asmFullName))
                    Log.w("Could not load assembly {0}", asmFullName);
                failedLoads[asmFullName] = true;
                return null;
            }
            if (assemblies.ContainsKey(asmDef.Name.FullName)) {
                assemblies[asmFullName] = assemblies[asmDef.Name.FullName];
                return assemblies[asmDef.Name.FullName];
            }

            if (asmFullName == asmDef.Name.FullName)
                Log.v("Loaded assembly {0}", asmFullName);
            else
                Log.v("Loaded assembly {0} (but wanted {1})", asmDef.Name.FullName, asmFullName);

            asm = new ExternalAssembly(asmDef);
            assemblies[asmFullName] = asm;
            assemblies[asmDef.Name.FullName] = asm;
            return asm;
        }
예제 #3
0
        ExternalAssembly load(TypeReference type)
        {
            var asmFullName = DotNetUtils.getFullAssemblyName(type);
            ExternalAssembly asm;
            if (assemblies.TryGetValue(asmFullName, out asm))
                return asm;

            AssemblyDefinition asmDef = null;
            try {
                asmDef = GlobalAssemblyResolver.Instance.Resolve(asmFullName);
            }
            catch (ResolutionException) {
            }
            catch (AssemblyResolutionException) {
            }
            if (asmDef == null) {
                // If we can't load it now, we can't load it later. Make sure above code returns null.
                assemblies[asmFullName] = null;
                Log.w("Could not load assembly {0}", asmFullName);
                return null;
            }
            if (assemblies.ContainsKey(asmDef.Name.FullName)) {
                assemblies[asmFullName] = assemblies[asmDef.Name.FullName];
                return assemblies[asmDef.Name.FullName];
            }

            if (asmFullName == asmDef.Name.FullName)
                Log.v("Loaded assembly {0}", asmFullName);
            else
                Log.v("Loaded assembly {0} (but wanted {1})", asmDef.Name.FullName, asmFullName);

            asm = new ExternalAssembly(asmDef);
            assemblies[asmFullName] = asm;
            assemblies[asmDef.Name.FullName] = asm;
            return asm;
        }