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); }
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); }
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); }