Ejemplo n.º 1
0
        /// <summary>
        /// THIS API WILL BE DEPRECATED
        /// Returns package references for all the dependent packages
        /// This is called by Find-Package -IncludeDependencies and returned as a flat list
        /// As well as Install-Package -WhatIf
        /// </summary>
        /// <param name="fastPackageReference"></param>
        /// <param name="request">An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST</param>
        public void GetPackageDependencies(string fastPackageReference, Request request)
        {
            request.Debug("Calling '{0}::GetPackageDependencies' '{1}'", PackageProviderName, fastPackageReference);

            string source;
            string id;
            string version;

            if (!fastPackageReference.TryParseFastPath(out source, out id, out version))
            {
                request.Error(ErrorCategory.InvalidArgument, fastPackageReference, Strings.InvalidFastPath, fastPackageReference);
            }

            PackageIdentity packageIdentity = new PackageIdentity(id, new NuGetVersion(version));

            var repo = RepositoryFactory.CreateV3(source);

            var dependencyResolver = repo.GetResource <DepedencyInfoResource>();

            var dependenciesTask = dependencyResolver.ResolvePackages(packageIdentity.AsEnumerable(), NuGetFramework.AnyFramework, false, CancellationToken.None);

            dependenciesTask.Wait();
            var results = dependenciesTask.Result;

            // TODO: Yield
            foreach (var result in results)
            {
                foreach (var dependency in result.Dependencies)
                {
                    //dependency.Id;
                    //dependency.VersionRange;
                }
            }
        }