public AssemblyNameReference GetAssemblyNameReference(IAssemblyNameReference item) { var canr = JustDecompileHelper.ExtractCecilAssemblyNameReference(item); if (canr == null) { return(null); } return(TryGetOrAdd(_assemblynamereferencecache, canr, anref => JustDecompileHelper.FindMatchingAssemblyReference(AssemblyDefinition, anref))); }
public static object ExtractCecilAssemblyNameReference(IAssemblyNameReference anr) { var field = anr.GetType() .GetFields(BindingFlags.Instance | BindingFlags.NonPublic) .FirstOrDefault(f => f.FieldType.FullName == typeof(AssemblyNameReference).FullName); if (field == null) { return(null); } return(field.GetValue(anr)); }
private IAssemblyContext SearchAssemblyReferenceContext(IAssemblyNameReference anr) { var canr = JustDecompileHelper.ExtractCecilAssemblyNameReference(anr); if (canr == null) { return(null); } foreach (var wrapper in Package.HostAssemblies) { var jdwrapper = (JustDecompileAssemblyWrapper)wrapper; foreach (var oanr in jdwrapper.AssemblyDefinition.MainModule.AssemblyReferences) { var coanr = JustDecompileHelper.ExtractCecilAssemblyNameReference(oanr); if (canr == coanr) { return(GetAssemblyContext(jdwrapper.Location)); } } } return(null); }