Exemplo n.º 1
0
        static async Task <int> RunCompare(
            string assembly1,
            string assembly2,
            List <DirectoryInfo> a1deps,
            List <DirectoryInfo> a2deps,
            List <DirectoryInfo> deps,
            DirectoryInfo outputApi,
            SemverChangeType?expectedChangeType,
            bool useDependencyChanges)
        {
            var platformDelimiter   = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ';' : ':';
            var frameworkAssemblies = (AppContext.GetData("TRUSTED_PLATFORM_ASSEMBLIES") as string).Split(platformDelimiter);
            var commonDeps          = deps?.Select(d => d?.FullName).ToList() ?? new List <string>();

            var assembly1Loader  = AssemblyLoaderFactory.ResolveLoader(assembly1);
            var assembly1Options = await assembly1Loader.LoadAssembly(new AssemblyLoaderOptions
            {
                AssemblyName            = assembly1,
                AssemblyDependencyPaths = commonDeps.Concat(a1deps?.Select(d => d?.FullName) ?? new List <string>()).ToArray(),
                FrameworkAssemblies     = frameworkAssemblies
            });

            if (string.IsNullOrWhiteSpace(assembly2))
            {
                return(SemverComparer.WritePublicApi(assembly1Options, outputApi?.FullName ?? ""));
            }

            var assembly2Loader  = AssemblyLoaderFactory.ResolveLoader(assembly2);
            var assembly2Options = await assembly2Loader.LoadAssembly(new AssemblyLoaderOptions
            {
                AssemblyName            = assembly2,
                AssemblyDependencyPaths = commonDeps.Concat(a2deps?.Select(d => d?.FullName) ?? new List <string>()).ToArray(),
                FrameworkAssemblies     = frameworkAssemblies
            });

            return(SemverComparer.Compare(assembly1Options, assembly2Options, outputApi?.FullName, expectedChangeType, useDependencyChanges));
        }