コード例 #1
0
        public IList <PortableExecutableReference> CreateFromPackages(IList <IPackage> packages, FrameworkName targetFramework)
        {
            packages = packages.ToList();

            if (!_packagesIntegrityValidator.IsValid(packages))
            {
                var cakeCore = _packageManager.InstallPackage(Constants.Packages.CakeCore, null, targetFramework);
                packages.Add(cakeCore);
            }

            var packageAssemblies = packages.SelectMany(package => _packageAssemblyResolver.ResolveAssemblies(package, targetFramework)).ToList();

            var referencedAssemblyReferences =
                packageAssemblies
                .SelectMany(packageFile => _assemblyLoader.LoadReferencedAssemblies(packageFile))
                .Select(assembly => CreateFromFile(assembly.Location))
                .ToList();

            var physicalPackagesReferences = packageAssemblies.Select(val => CreateFromFile(val.Location));

            return(referencedAssemblyReferences.Union(physicalPackagesReferences).DistinctBy(reference => Path.GetFileName(reference.FilePath)).ToList());
        }