Example #1
0
        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);
        }