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()); }