Esempio n. 1
0
        public static AssemblyDefinition GetAssembly(string filename, string dllReferencePath)
        {
            AssemblyDefinition assembly = null;

            try
            {
                //Log.Verbose("Loading assembly: " + filename);
                assembly = AssemblyFactory.GetAssembly(filename);
                CustomAssemblyResolver resolver = new CustomAssemblyResolver();
                resolver.AddSearchDirectory(dllReferencePath);
                assembly.Resolver = resolver;

                Load(assembly);
            }
            catch (Exception ex)
            {
                Log.Error("Not able to load and reflect on assembly: " + filename + ". However the assembly will still be included in the WSP package!");
#if DEBUG
                Log.Error(ex.Message);
                Log.Verbose(ex.StackTrace);
#endif
            }

            return(assembly);
        }
Esempio n. 2
0
        public static bool IsType(CustomAssemblyResolver resolver, string asmName, string className, Type targetType)
        {
            if (targetType.FullName.Equals(className))
            {
                return(true);
            }

            ClassType classType = AssemblyStore.GetClassType(resolver, asmName, className);

            if (classType != null)
            {
                return(IsType(resolver, classType.BaseAssembly, classType.BaseName, targetType));
            }
            return(false);
        }
Esempio n. 3
0
        public static ClassType GetClassType(CustomAssemblyResolver resolver, string asmName, string className)
        {
            AssemblyType asmType = null;

            if (asmStore.ContainsKey(asmName))
            {
                asmType = asmStore[asmName];
            }

            if (asmType == null)
            {
                asmType = Load(resolver.Resolve(asmName));
                resolver.Clear();
                GC.Collect();
            }

            ClassType type = null;

            if (asmType.Types.ContainsKey(className))
            {
                type = asmType.Types[className];
            }
            return(type);
        }