Пример #1
0
        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;
        }