public IEnumerable<Change<string>> GetAllPublicContractChangesBetween(AssemblyDefinition oldAssembly, AssemblyDefinition newAssembly) { var ret = new List<Change<string>>(); try { if (newAssembly.ContainsAttribute("InternalsVisibleToAttribute")) { ret.Add(new Change<string>(ChangeType.Modify, "Internals Are Visible, rebuild!")); }; var oldCache = AssemblyPubliclyVisibleStuffMapBuilder.BuildPublicOnlyFor(oldAssembly); var newCache = AssemblyPubliclyVisibleStuffMapBuilder.BuildPublicOnlyFor(newAssembly); var differences = MapKeyDifferenceFinder.GetChangesBetween(oldCache, newCache); foreach (var c in differences) { ret.Add(new Change<string>(c.ChangeType, c.ItemChanged.FullName)); } } catch (Exception ex) { ret.Add(new Change<string>(ChangeType.Modify, "An exception occured finding changes" + ex)); } return ret; }