private IEnumerable<string> GetPackageAssemblyNames(string path) { var compatibilityProvider = new DefaultCompatibilityProvider(); var folderReader = new PackageFolderReader(Path.Combine(path, _fileSystem.PackagesFolder)); var nupkgFiles = folderReader.GetFiles().Where(x => Path.GetExtension(x).ToLowerInvariant() == ".nupkg"); var packagesConfig = XDocument.Parse(File.ReadAllText(Path.Combine(path, _fileSystem.PackagesFile))); var reader = new PackagesConfigReader(packagesConfig); var contents = reader.GetPackages(); var result = new List<string>(); foreach (var nupkg in nupkgFiles) { var stream = folderReader.GetStream(nupkg); var packageReader = new PackageReader(stream); var identity = packageReader.GetIdentity(); var packagesConfigReference = contents.FirstOrDefault(x => x.PackageIdentity.Id == identity.Id && x.PackageIdentity.Version == identity.Version); if (packagesConfigReference == null) { break; } var packageContents = packageReader.GetLibItems().Where(x => compatibilityProvider.IsCompatible(x.TargetFramework, packagesConfigReference.TargetFramework)). SelectMany(x => x.Items.Where(i => Path.GetExtension(i).ToLowerInvariant() == ".dll")); result.AddRange(packageContents); } return result; }
public virtual void VerifyPackageVersion(string packagePath, string expectedVersion) { using (var stream = File.OpenRead(packagePath)) using (var reader = new PackageReader(stream)) { var identity = reader.GetIdentity(); var actualVersion = identity.Version.ToNormalizedString(); Assert.AreEqual(expectedVersion, actualVersion, "Checking package version"); } }
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; }