private static SemverChangeType CompareDependencies(Assembly assembly1, Assembly assembly2) { var assembly1Dependencies = assembly1.GetReferencedAssemblies().ToDictionary(a => a.Name, a => a.Version); var assembly2Dependencies = assembly2.GetReferencedAssemblies().ToDictionary(a => a.Name, a => a.Version); var calculatedChange = SemverChangeType.None; foreach (var dependency in assembly2Dependencies) { if (!assembly1Dependencies.TryGetValue(dependency.Key, out var previousVersion)) { Console.WriteLine($"New dependency added: {dependency.Key} {dependency.Value}"); } else if (previousVersion != dependency.Value) { var change = SemverChangeType.None; if (Semver.TryParse(previousVersion, out var previousSemver) && Semver.TryParse(dependency.Value, out var newSemver)) { change = previousSemver.GetChangeType(newSemver); if (change > calculatedChange) { calculatedChange = change; } } Console.WriteLine($"Dependency version change: {dependency.Key} ({previousVersion} => {dependency.Value}) [{change}]"); } } return(calculatedChange); }