public async override Task<bool> InstallPackageAsync(Packaging.Core.PackageIdentity packageIdentity, System.IO.Stream packageStream, INuGetProjectContext nuGetProjectContext, CancellationToken token) { if (!packageStream.CanSeek) { throw new ArgumentException(NuGet.ProjectManagement.Strings.PackageStreamShouldBeSeekable); } nuGetProjectContext.Log(MessageLevel.Info, Strings.InstallingPackage, packageIdentity); packageStream.Seek(0, SeekOrigin.Begin); var zipArchive = new ZipArchive(packageStream); PackageReader packageReader = new PackageReader(zipArchive); var packageSupportedFrameworks = packageReader.GetSupportedFrameworks(); var projectFrameworks = _project.GetSupportedFrameworksAsync(token) .Result .Select(f => NuGetFramework.Parse(f.FullName)); var args = new Dictionary<string, object>(); args["Frameworks"] = projectFrameworks.Where( projectFramework => IsCompatible(projectFramework, packageSupportedFrameworks)).ToArray(); await _project.InstallPackageAsync( new NuGetPackageMoniker { Id = packageIdentity.Id, Version = packageIdentity.Version.ToNormalizedString() }, args, logger: null, progress: null, cancellationToken: token); return true; }
private static IEnumerable<string> GetSupportedFrameworks(PackageReader packageReader) { return packageReader .GetSupportedFrameworks() .Select(fn => fn.ToShortNameOrNull()) .ToArray(); }
public virtual IEnumerable<NuGetFramework> GetSupportedFrameworks(PackageReader package) { return package.GetSupportedFrameworks(); }