コード例 #1
0
ファイル: NugetHandler.cs プロジェクト: The-Tech-Idea/BeepDM
        public async Task GetPackageMetaDataAsync(string packagename)
        {
            ILogger           logger            = NullLogger.Instance;
            CancellationToken cancellationToken = CancellationToken.None;

            SourceCacheContext      cache      = new SourceCacheContext();
            SourceRepository        repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
            PackageMetadataResource resource   = await repository.GetResourceAsync <PackageMetadataResource>();

            packageMetaData = await resource.GetMetadataAsync(
                packagename,
                includePrerelease : true,
                includeUnlisted : false,
                cache,
                logger,
                cancellationToken);

            foreach (IPackageSearchMetadata package in packageMetaData)
            {
                Console.WriteLine($"Version: {package.Identity.Version}");
                Console.WriteLine($"Listed: {package.IsListed}");
                Console.WriteLine($"Tags: {package.Tags}");
                Console.WriteLine($"Description: {package.Description}");
            }
        }
コード例 #2
0
        private static async Task FindUpdates(Dictionary <string, string> packageReferences)
        {
            var logger   = new Logger();
            var packages = new Dictionary <string, NuGetVersion>(StringComparer.OrdinalIgnoreCase);

            List <Lazy <INuGetResourceProvider> > providers = new List <Lazy <INuGetResourceProvider> >();

            providers.AddRange(Repository.Provider.GetCoreV3());
            PackageSource           packageSource           = new PackageSource("https://api.nuget.org/v3/index.json");
            SourceRepository        sourceRepository        = new SourceRepository(packageSource, providers);
            PackageMetadataResource packageMetadataResource = await sourceRepository.GetResourceAsync <PackageMetadataResource>();

            foreach (var packageReference in packageReferences)
            {
                await GetDependencies(packageReference.Key, NuGetVersion.Parse(packageReference.Value), packages, packageMetadataResource, logger, GetTargetFrameworks());
            }


            var updates = await GetUpdates(packages, packageMetadataResource, logger);

            Console.WriteLine();
            Console.WriteLine("-------------------------");
            Console.WriteLine("--- Available updates ---");
            Console.WriteLine("-------------------------");
            Console.WriteLine();

            foreach (var update in updates.OrderBy(u => u.Item1))
            {
                Console.WriteLine("{0}: {1} -> {2}", update.Item1, update.Item2, update.Item3);
            }
        }
コード例 #3
0
        public UpdatePackageFeedTests()
        {
            // dependencies and data
            _metadataResource = Mock.Of <PackageMetadataResource>();

            var provider = Mock.Of <INuGetResourceProvider>();

            Mock.Get(provider)
            .Setup(x => x.TryCreate(It.IsAny <SourceRepository>(), It.IsAny <CancellationToken>()))
            .Returns(() => Task.FromResult(Tuple.Create(true, (INuGetResource)_metadataResource)));
            Mock.Get(provider)
            .Setup(x => x.ResourceType)
            .Returns(typeof(PackageMetadataResource));

            var logger        = new TestLogger();
            var packageSource = new Configuration.PackageSource("http://fake-source");
            var source        = new SourceRepository(packageSource, new[] { provider });

            // target
            _metadataProvider = new MultiSourcePackageMetadataProvider(
                new[] { source },
                optionalLocalRepository: null,
                optionalGlobalLocalRepositories: null,
                logger: logger);
        }
コード例 #4
0
        private static HashSet <PackageId> getDependencies(PackageId pkg)
        {
            HashSet <PackageId> results = new HashSet <PackageId>();

            Logger logger = new Logger();
            List <Lazy <INuGetResourceProvider> > providers = new List <Lazy <INuGetResourceProvider> >();

            providers.AddRange(Repository.Provider.GetCoreV3());  // Add v3 API support
            //providers.AddRange(Repository.Provider.GetCoreV2());  // Add v2 API support
            PackageSource           packageSource           = new PackageSource("https://api.nuget.org/v3/index.json");
            SourceRepository        sourceRepository        = new SourceRepository(packageSource, providers);
            PackageMetadataResource packageMetadataResource = sourceRepository.GetResource <PackageMetadataResource>();
            var task = packageMetadataResource.GetMetadataAsync(pkg.Id, true, true, logger, CancellationToken.None);

            task.Wait();
            IEnumerable <IPackageSearchMetadata> searchMetadata = task.Result;

            foreach (IPackageSearchMetadata metadata in searchMetadata)
            {
                if (pkg.Version == metadata.Identity.Version)
                {
                    foreach (PackageDependencyGroup deps in metadata.DependencySets)
                    {
                        foreach (var dep in deps.Packages)
                        {
                            results.Add(new PackageId(dep.Id, dep.VersionRange.MinVersion.ToNormalizedString()));
                        }
                    }
                    break;
                }
            }
            return(results);
        }
        GetPackageMetadataAsync
        (
            string nuget_id
        )
        {
            PackageMetadataResource resource = await repository.GetResourceAsync <PackageMetadataResource>();

            IEnumerable <IPackageSearchMetadata> packages = await resource.GetMetadataAsync
                                                            (
                nuget_id,
                includePrerelease : true,
                includeUnlisted : false,
                source_cache,
                logger,
                cancellationToken
                                                            );

            foreach (IPackageSearchMetadata package in packages)
            {
                Console.WriteLine($"Version: {package.Identity.Version}");
                Console.WriteLine($"Listed: {package.IsListed}");
                Console.WriteLine($"Tags: {package.Tags}");
                Console.WriteLine($"Description: {package.Description}");
            }
            return(packages);
        }
コード例 #6
0
        private void AddPackageSource(List <Lazy <INuGetResourceProvider> > providers, PackageSource packageSource)
        {
            SourceRepository sourceRepository = new SourceRepository(packageSource, providers);

            try
            {
                PackageMetadataResource packageMetadataResource = sourceRepository.GetResource <PackageMetadataResource>();
                MetadataResourceList.Add(packageMetadataResource);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error loading NuGet Package Meta Data Resource resoure for url: " + packageSource.SourceUri);
                if (e.InnerException != null)
                {
                    Console.WriteLine(e.InnerException.Message);
                }
            }
            try
            {
                DependencyInfoResource dependencyInfoResource = sourceRepository.GetResource <DependencyInfoResource>();
                DependencyInfoResourceList.Add(dependencyInfoResource);
                Console.WriteLine("Succesfully added dependency info resource: " + sourceRepository.PackageSource.SourceUri);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error loading NuGet Dependency Resource resoure for url: " + packageSource.SourceUri);
                if (e.InnerException != null)
                {
                    Console.WriteLine(e.InnerException.Message);
                }
            }
        }
コード例 #7
0
        public static async Task GetPackageMetadataAsync()
        {
            // This code region is referenced by the NuGet docs. Please update the docs if you rename the region
            // or move it to a different file.
            #region GetPackageMetadata
            ILogger           logger            = NullLogger.Instance;
            CancellationToken cancellationToken = CancellationToken.None;

            SourceCacheContext      cache      = new SourceCacheContext();
            SourceRepository        repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
            PackageMetadataResource resource   = await repository.GetResourceAsync <PackageMetadataResource>();

            IEnumerable <IPackageSearchMetadata> packages = await resource.GetMetadataAsync(
                "Newtonsoft.Json",
                includePrerelease : true,
                includeUnlisted : false,
                cache,
                logger,
                cancellationToken);

            foreach (IPackageSearchMetadata package in packages)
            {
                Console.WriteLine($"Version: {package.Identity.Version}");
                Console.WriteLine($"Listed: {package.IsListed}");
                Console.WriteLine($"Tags: {package.Tags}");
                Console.WriteLine($"Description: {package.Description}");
            }
            #endregion
        }
コード例 #8
0
        public IEnumerable <PSResourceInfo> SearchAcrossNamesInRepository(
            string repositoryName,
            PackageSearchResource pkgSearchResource,
            PackageMetadataResource pkgMetadataResource,
            SearchFilter searchFilter,
            SourceCacheContext sourceContext)
        {
            foreach (string pkgName in _pkgsLeftToFind.ToArray())
            {
                if (String.IsNullOrWhiteSpace(pkgName))
                {
                    _cmdletPassedIn.WriteDebug(String.Format("Package name: {0} provided was null or whitespace, so name was skipped in search.",
                                                             pkgName == null ? "null string" : pkgName));
                    continue;
                }

                foreach (PSResourceInfo pkg in FindFromPackageSourceSearchAPI(
                             repositoryName: repositoryName,
                             pkgName: pkgName,
                             pkgSearchResource: pkgSearchResource,
                             pkgMetadataResource: pkgMetadataResource,
                             searchFilter: searchFilter,
                             sourceContext: sourceContext))
                {
                    yield return(pkg);
                }
            }
        }
コード例 #9
0
        public IPackageSearchMetadata GetPackageFromRepoWithVersion(string packageName,
                                                                    string version,
                                                                    PackageMetadataResource packageMetadataResource,
                                                                    SourceCacheContext sourceCacheContext,
                                                                    SourceRepository sourceRepository)
        {
            IPackageSearchMetadata rootPackage = null;


            if (NuGetVersion.TryParse(version, out var _nugetversion))
            {
                var packageIdentity = new PackageIdentity(packageName, NuGetVersion.Parse(version));

                var exacactsearchMetadata = packageMetadataResource.GetMetadataAsync(packageIdentity, sourceCacheContext, Logger, CancellationToken.None)
                                            .Result;

                if (exacactsearchMetadata == null)
                {
                    Logger.LogDebug("GetPackageFromRepoWithVersion - No Package found in Repo " + $"{sourceRepository.PackageSource.Source} for package : {packageName}  with version  {version}");
                }
                else
                {
                    rootPackage = exacactsearchMetadata;
                }
            }

            return(rootPackage);
        }
コード例 #10
0
        public async Task <IPackageSearchMetadata> GetAsync(string id, NuGetVersion version)
        {
            PackageMetadataResource packageMetadataResource = await GetPackageMetadataResource();

            var searchMetadata = await packageMetadataResource.GetMetadataAsync(id, true, true, _nugetLogger, CancellationToken.None);

            return(searchMetadata.FirstOrDefault(p => p.Identity.Version == version));;
        }
コード例 #11
0
        private async Task <PackageMetadataResource> GetPackageMetadataResource()
        {
            if (_packageMetadataResource == null)
            {
                _packageMetadataResource = await SourceRepository.GetResourceAsync <PackageMetadataResource>();
            }

            return(_packageMetadataResource);
        }
コード例 #12
0
 private async Task <IEnumerable <IPackageSearchMetadata> > FindPackage(
     PackageMetadataResource metadataResource, string packageName, bool includePrerelease)
 {
     using (var cacheContext = new SourceCacheContext())
     {
         return(await metadataResource
                .GetMetadataAsync(packageName, includePrerelease, false,
                                  cacheContext, _nuGetLogger, CancellationToken.None));
     }
 }
コード例 #13
0
        public async Task <IEnumerable <IPackageSearchMetadata> > GetPackagesMetaDataAsync()
        {
            _logger.DEBUG($"started searching for packages metadata from the providers, using V3 and V2 protocols");

            var sourceRepository = GetSourceRepository();

            PackageMetadataResource packageMetadataResource = await sourceRepository.GetResourceAsync <PackageMetadataResource>();

            return(await packageMetadataResource.GetMetadataAsync(_configuration.packageID, true, true, null, CancellationToken.None));
        }
コード例 #14
0
        private List <PSResourceInfo> FindDependencyPackages(
            PSResourceInfo currentPkg,
            PackageMetadataResource packageMetadataResource,
            SourceCacheContext sourceCacheContext
            )
        {
            List <PSResourceInfo> thoseToAdd = new List <PSResourceInfo>();

            FindDependencyPackagesHelper(currentPkg, thoseToAdd, packageMetadataResource, sourceCacheContext);
            return(thoseToAdd);
        }
コード例 #15
0
        public void foo()
        {
            const string packageId = "NUnit";
            TestLogger   logger    = new TestLogger(s => TestContext.WriteLine(s));
            List <Lazy <INuGetResourceProvider> > providers = new List <Lazy <INuGetResourceProvider> >();

            providers.AddRange(Repository.Provider.GetCoreV3());  // Add v3 API support
            PackageSource           packageSource               = new PackageSource("https://api.nuget.org/v3/index.json");
            SourceRepository        sourceRepository            = new SourceRepository(packageSource, providers);
            PackageMetadataResource packageMetadataResource     = GetTaskResult(() => sourceRepository.GetResourceAsync <PackageMetadataResource>(), "repository does not respond on time");
            IEnumerable <IPackageSearchMetadata> searchMetadata = GetTaskResult(() => packageMetadataResource.GetMetadataAsync(packageId, true, true, logger, CancellationToken.None), "cannot retrieve packages on time");
        }
コード例 #16
0
        public override bool Execute()
        {
            MSBuildLogger logger = new MSBuildLogger(Log);
            List <Lazy <INuGetResourceProvider> > providers = new List <Lazy <INuGetResourceProvider> >();

            providers.AddRange(Repository.Provider.GetCoreV3());  // Add v3 API support
            PackageSource           packageSource               = new PackageSource("https://api.nuget.org/v3/index.json");
            SourceRepository        sourceRepository            = new SourceRepository(packageSource, providers);
            PackageMetadataResource packageMetadataResource     = GetTaskResult(() => sourceRepository.GetResourceAsync <PackageMetadataResource>(), "repository does not respond on time");
            IEnumerable <IPackageSearchMetadata> searchMetadata = GetTaskResult(() => packageMetadataResource.GetMetadataAsync(PackageId, true, true, logger, CancellationToken.None), "cannot retrieve packages on time");

            return(true);
        }
コード例 #17
0
            public LocalProviderTests()
            {
                _localMetadataResource = Mock.Of <PackageMetadataResource>();
                _localSource           = SetupSourceRepository(_localMetadataResource);

                _globalMetadataResource = Mock.Of <PackageMetadataResource>();
                _globalSource           = SetupSourceRepository(_globalMetadataResource);

                _target = new MultiSourcePackageMetadataProvider(
                    new[] { _source },
                    optionalLocalRepository: _localSource,
                    optionalGlobalLocalRepositories: new[] { _globalSource },
                    logger: _logger);
            }
コード例 #18
0
        public ProjectReaderNugetDependencyDecorator(IProjectReader @base,
                                                     PackageMetadataResource metadataProvider,
                                                     DependencyInfoResource dependencyResolver,
                                                     SourceCacheContext cacheContext,
                                                     ILogger logger)
        {
            _base               = @base ?? throw new ArgumentNullException(nameof(@base));
            _metadataProvider   = metadataProvider ?? throw new ArgumentNullException(nameof(metadataProvider));
            _dependencyResolver = dependencyResolver ?? throw new ArgumentNullException(nameof(dependencyResolver));
            _cacheContext       = cacheContext ?? throw new ArgumentNullException(nameof(cacheContext));
            _logger             = logger ?? throw new ArgumentNullException(nameof(logger));

            _cancellationToken = CancellationToken.None;
        }
コード例 #19
0
ファイル: NuGetFeed.cs プロジェクト: ScriptBox21/MS-scalar
        /// <summary>
        /// Query a NuGet feed for list of packages that match the packageId.
        /// </summary>
        /// <param name="packageId"></param>
        /// <returns>List of packages that match query parameters</returns>
        public virtual async Task <IList <IPackageSearchMetadata> > QueryFeedAsync(string packageId)
        {
            PackageMetadataResource packageMetadataResource = await this.sourceRepository.GetResourceAsync <PackageMetadataResource>();

            IEnumerable <IPackageSearchMetadata> queryResults = await packageMetadataResource.GetMetadataAsync(
                packageId,
                includePrerelease : false,
                includeUnlisted : false,
                sourceCacheContext : this.sourceCacheContext,
                log : this.nuGetLogger,
                token : CancellationToken.None);

            return(queryResults.ToList());
        }
コード例 #20
0
            protected static SourceRepository SetupSourceRepository(PackageMetadataResource resource)
            {
                var provider = Mock.Of <INuGetResourceProvider>();

                Mock.Get(provider)
                .Setup(x => x.TryCreate(It.IsAny <SourceRepository>(), It.IsAny <CancellationToken>()))
                .Returns(() => Task.FromResult(Tuple.Create(true, (INuGetResource)resource)));
                Mock.Get(provider)
                .Setup(x => x.ResourceType)
                .Returns(typeof(PackageMetadataResource));

                var packageSource = new Configuration.PackageSource("http://fake-source");

                return(new SourceRepository(packageSource, new[] { provider }));
            }
コード例 #21
0
        private static async Task <IEnumerable <IPackageSearchMetadata> > GetListedPackages(string packageID)
        {
            List <Lazy <INuGetResourceProvider> > providers = new List <Lazy <INuGetResourceProvider> >();

            providers.AddRange(Repository.Provider.GetCoreV3());  // Add v3 API support

            PackageSource packageSource = new PackageSource(NUGET_API_SERVICE_INDEX);

            SourceRepository sourceRepository = new SourceRepository(packageSource, providers);

            PackageMetadataResource packageMetadataResource = await sourceRepository.GetResourceAsync <PackageMetadataResource>();

            IEnumerable <IPackageSearchMetadata> searchMetadata = await packageMetadataResource.GetMetadataAsync(packageID, true, true, logger, CancellationToken.None);

            return(searchMetadata);
        }
コード例 #22
0
        public static async Task <string?> FindNewestPackageVersion(string package, bool includePrerelease)
        {
            Logger logger = new Logger();
            List <Lazy <INuGetResourceProvider> > providers = new List <Lazy <INuGetResourceProvider> >();

            providers.AddRange(Repository.Provider.GetCoreV3());  // Add v3 API support
            //providers.AddRange(Repository.Provider.GetCoreV2());  // Add v2 API support
            PackageSource           packageSource           = new PackageSource("https://api.nuget.org/v3/index.json");
            SourceRepository        sourceRepository        = new SourceRepository(packageSource, providers);
            PackageMetadataResource packageMetadataResource = await sourceRepository.GetResourceAsync <PackageMetadataResource>();

            IEnumerable <IPackageSearchMetadata> searchMetadata = await packageMetadataResource.GetMetadataAsync(package, true, true, logger, CancellationToken.None);

            NuGetVersion?newest = null;

            foreach (var item in searchMetadata)
            {
                if (item is PackageSearchMetadata itemMetadata)
                {
                    var version = itemMetadata.Version;
                    if (!itemMetadata.IsListed)
                    {
                        continue;
                    }
                    if (version.IsPrerelease && !includePrerelease)
                    {
                        continue;
                    }
                    if (newest == null)
                    {
                        newest = version;
                        continue;
                    }
                    if (version.CompareTo(newest.Version) > 0)
                    {
                        newest = version;
                    }
                }
            }
            if (newest == null)
            {
                return(null);
            }
            return(newest.ToNormalizedString());
        }
コード例 #23
0
        /// <summary>
        /// Return the latest version of the source
        /// </summary>
        /// <param name="source">Source to look at</param>
        /// <param name="logger">Logger</param>
        /// <param name="packageId">Package to look for</param>
        /// <param name="prerelease">Whether to include prerelease versions</param>
        /// <returns>Returns the latest version available from a source or a null if non is found.</returns>
        public static async Task <NuGetVersion> GetLatestVersionFromSourceAsync(PackageSource source, ILogger logger, string packageId, bool prerelease)
        {
            SourceRepository        repository = Repository.Factory.GetCoreV3(source);
            PackageMetadataResource resource   = await repository.GetResourceAsync <PackageMetadataResource>();

            using (var cache = new SourceCacheContext())
            {
                IEnumerable <IPackageSearchMetadata> packages = await resource.GetMetadataAsync(
                    packageId,
                    includePrerelease : prerelease,
                    includeUnlisted : false,
                    cache,
                    logger,
                    CancellationToken.None
                    );

                return(packages?.Max(x => x.Identity.Version));
            }
        }
コード例 #24
0
ファイル: Program.cs プロジェクト: WonyoungChoi/NuGetTree
        public async Task GetPackageInfo(string packageId, string packageVersion)
        {
            PackageMetadataResource packageMetadataResource = await _repository.GetResourceAsync <PackageMetadataResource>();

            PackageIdentity        id   = new PackageIdentity(packageId, new NuGetVersion(packageVersion));
            IPackageSearchMetadata data = await packageMetadataResource.GetMetadataAsync(id, _logger, CancellationToken.None);

            Console.WriteLine("{0} {1}", data.Identity.Id, data.Identity.Version);
            IEnumerable <PackageDependencyGroup> dependencyGroups = data.DependencySets;

            foreach (var group in dependencyGroups)
            {
                Console.WriteLine("  {0}:", group.TargetFramework);
                foreach (PackageDependency package in group.Packages)
                {
                    Console.WriteLine("    {0} {1}", package.Id, package.VersionRange);
                }
            }
        }
コード例 #25
0
        static async Task <string> GetLatestNugetVersion(string PackageName)
        {
            ILogger           logger            = NullLogger.Instance;
            CancellationToken cancellationToken = CancellationToken.None;

            SourceCacheContext      cache      = new SourceCacheContext();
            SourceRepository        repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
            PackageMetadataResource resource   = await repository.GetResourceAsync <PackageMetadataResource>();

            IEnumerable <IPackageSearchMetadata> packages = await resource.GetMetadataAsync(
                PackageName,
                includePrerelease : false,
                includeUnlisted : false,
                cache,
                logger,
                cancellationToken);

            return(packages.Last().Identity.Version.ToString());
        }
コード例 #26
0
 public NuGetToNpmWorker(
     IPackageNameMapper nameMapper,
     IPackageFilter filter,
     FindPackageByIdResource findPackageByIdResource,
     PackageMetadataResource metadataResource,
     IConfiguration configuration,
     ILogger <NuGetToNpmWorker> logger,
     NuGet.Common.ILogger nugetLogger,
     SourceCacheContext cacheContext)
 {
     _nameMapper = nameMapper;
     _filter     = filter;
     _findPackageByIdResource = findPackageByIdResource;
     _metadataResource        = metadataResource;
     _configuration           = configuration;
     _logger       = logger;
     _nugetLogger  = nugetLogger;
     _cacheContext = cacheContext;
 }
コード例 #27
0
        public static async Task <List <IPackageSearchMetadata> > GetPackageMetadata(string packageId, string source, bool includePrerelease)
        {
            ILogger           logger            = NullLogger.Instance;
            CancellationToken cancellationToken = CancellationToken.None;

            SourceCacheContext      cache      = new SourceCacheContext();
            SourceRepository        repository = Repository.Factory.GetCoreV3(source);
            PackageMetadataResource resource   = await repository.GetResourceAsync <PackageMetadataResource>();

            IEnumerable <IPackageSearchMetadata> packages = await resource.GetMetadataAsync(
                packageId,
                includePrerelease : includePrerelease,
                includeUnlisted : true,
                cache,
                logger,
                cancellationToken);

            return(packages.ToList());
        }
コード例 #28
0
        private List <PackageMetadataResource> CreateMetaDataResourceList(List <Lazy <INuGetResourceProvider> > providers)
        {
            List <PackageMetadataResource> list = new List <PackageMetadataResource>();

            string[] splitRepoUrls = PackagesRepoUrl.Split(new char[] { ',' });

            foreach (string repoUrl in splitRepoUrls)
            {
                string url = repoUrl.Trim();
                if (!String.IsNullOrWhiteSpace(url))
                {
                    PackageSource           packageSource           = new PackageSource(url);
                    SourceRepository        sourceRepository        = new SourceRepository(packageSource, providers);
                    PackageMetadataResource packageMetadataResource = sourceRepository.GetResource <PackageMetadataResource>();
                    list.Add(packageMetadataResource);
                }
            }

            return(list);
        }
        private async Task <bool> SearchOlderVersionsUsingMetadataResourceAsync(List <IPackage> result, int resultCount, IPackageSearchMetadata package, SourceRepository repository, Func <IPackageSearchMetadata, IPackageSearchMetadata, bool> versionFilter, bool isPrereleaseIncluded, CancellationToken cancellationToken)
        {
            PackageMetadataResource metadataResource = await repository.GetResourceAsync <PackageMetadataResource>(cancellationToken);

            if (metadataResource == null)
            {
                return(false);
            }

            using (var sourceCacheContext = new SourceCacheContext())
            {
                IEnumerable <IPackageSearchMetadata> versions = await metadataResource?.GetMetadataAsync(
                    package.Identity.Id,
                    isPrereleaseIncluded,
                    false,
                    sourceCacheContext,
                    nuGetLog,
                    cancellationToken
                    );

                versions = versions.OrderByDescending(p => p.Identity.Version, VersionComparer.Default);
                foreach (IPackageSearchMetadata version in versions)
                {
                    if (versionFilter(package, version))
                    {
                        IPackage item = await ProcessOlderVersionAsync(repository, version, cancellationToken);

                        if (item != null)
                        {
                            result.Add(item);
                            if (result.Count == resultCount)
                            {
                                return(true);
                            }
                        }
                    }
                }
            }

            return(true);
        }
コード例 #30
0
        public BdioContent BuildBOM()
        {
            // Load the packages.config file into a list of Packages
            NuGet.PackageReferenceFile configFile = new NuGet.PackageReferenceFile(PackagesConfigPath);

            // Setup NuGet API
            // Snippets taken from https://daveaglick.com/posts/exploring-the-nuget-v3-libraries-part-2 with modifications
            List <Lazy <INuGetResourceProvider> > providers = new List <Lazy <INuGetResourceProvider> >();

            providers.AddRange(Repository.Provider.GetCoreV3());  // Add v3 API support
            providers.AddRange(Repository.Provider.GetCoreV2());  // Add v2 API support
            // we may need more code here around handling package sources.
            PackageSource           packageSource           = new PackageSource(PackagesRepoUrl);
            SourceRepository        sourceRepository        = new SourceRepository(packageSource, providers);
            PackageMetadataResource packageMetadataResource = sourceRepository.GetResource <PackageMetadataResource>();

            // Create BDIO
            BdioContent bdioContent = BuildBOMFromMetadata(new List <NuGet.PackageReference>(configFile.GetPackageReferences()), packageMetadataResource);

            return(bdioContent);
        }