public async override Task <IEnumerable <Packaging.PackageReference> > GetInstalledPackagesAsync(CancellationToken token) { var result = new List <Packaging.PackageReference>(); foreach (object item in await _project.GetInstalledPackagesAsync(token)) { Packaging.Core.PackageIdentity identity = null; var moniker = item as INuGetPackageMoniker; if (moniker != null) { identity = new Packaging.Core.PackageIdentity( moniker.Id, NuGetVersion.Parse(moniker.Version)); } else { // otherwise, item is the file name of the nupkg file var fileName = item as string; using (var fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { var zipArchive = new ZipArchive(fileStream); var packageReader = new PackageReader(zipArchive); identity = packageReader.GetIdentity(); } } result.Add(new Packaging.PackageReference( identity, targetFramework: null)); } return(result); }
public async override Task <bool> UninstallPackageAsync(Packaging.Core.PackageIdentity packageIdentity, INuGetProjectContext nuGetProjectContext, CancellationToken token) { nuGetProjectContext.Log(MessageLevel.Info, Strings.UninstallingPackage, packageIdentity); var args = new Dictionary <string, object>(); await _project.UninstallPackageAsync( new NuGetPackageMoniker { Id = packageIdentity.Id, Version = packageIdentity.Version.ToNormalizedString() }, args, logger : null, progress : null, cancellationToken : token); return(true); }
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); }
public async override Task<IEnumerable<Packaging.PackageReference>> GetInstalledPackagesAsync(CancellationToken token) { var result = new List<Packaging.PackageReference>(); foreach (object item in await _project.GetInstalledPackagesAsync(token)) { Packaging.Core.PackageIdentity identity = null; var moniker = item as INuGetPackageMoniker; if (moniker != null) { identity = new Packaging.Core.PackageIdentity( moniker.Id, NuGetVersion.Parse(moniker.Version)); } else { // otherwise, item is the file name of the nupkg file var fileName = item as string; using (var fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { var zipArchive = new ZipArchive(fileStream); var packageReader = new PackageReader(zipArchive); identity = packageReader.GetIdentity(); } } result.Add(new Packaging.PackageReference( identity, targetFramework: null)); } return result; }