Пример #1
0
        public static Task <RemoteMatch> FindProjectMatchAsync(
            LibraryRange libraryRange,
            NuGetFramework framework,
            IEnumerable <IDependencyProvider> projectProviders,
            CancellationToken cancellationToken)
        {
            RemoteMatch result = null;

            // Check if projects are allowed for this dependency
            if (libraryRange.TypeConstraintAllowsAnyOf(
                    (LibraryDependencyTarget.Project | LibraryDependencyTarget.ExternalProject)))
            {
                foreach (var provider in projectProviders)
                {
                    if (provider.SupportsType(libraryRange.TypeConstraint))
                    {
                        var match = provider.GetLibrary(libraryRange, framework);

                        if (match != null)
                        {
                            result = new LocalMatch
                            {
                                LocalLibrary  = match,
                                Library       = match.Identity,
                                LocalProvider = provider,
                                Provider      = new LocalDependencyProvider(provider),
                                Path          = match.Path,
                            };
                        }
                    }
                }
            }

            return(Task.FromResult <RemoteMatch>(result));
        }
Пример #2
0
        private Task <RemoteMatch> FindProjectMatch(
            LibraryRange libraryRange,
            NuGetFramework framework,
            GraphEdge <RemoteResolveResult> outerEdge,
            CancellationToken cancellationToken)
        {
            RemoteMatch result = null;

            // Check if projects are allowed for this dependency
            if (libraryRange.TypeConstraintAllowsAnyOf(
                    (LibraryDependencyTarget.Project | LibraryDependencyTarget.ExternalProject)))
            {
                foreach (var provider in _context.ProjectLibraryProviders)
                {
                    if (provider.SupportsType(libraryRange.TypeConstraint))
                    {
                        var match = provider.GetLibrary(libraryRange, framework);

                        if (match != null)
                        {
                            result = new LocalMatch
                            {
                                LocalLibrary  = match,
                                Library       = match.Identity,
                                LocalProvider = provider,
                                Provider      = new LocalDependencyProvider(provider),
                                Path          = match.Path,
                            };
                        }
                    }
                }
            }

            return(Task.FromResult <RemoteMatch>(result));
        }
Пример #3
0
        private Task <RemoteMatch> FindProjectMatch(
            LibraryRange libraryRange,
            NuGetFramework framework,
            GraphEdge <RemoteResolveResult> outerEdge,
            CancellationToken cancellationToken)
        {
            RemoteMatch result = null;

            // Check if projects are allowed for this dependency
            if (libraryRange.TypeConstraintAllowsAnyOf(
                    (LibraryDependencyTarget.Project | LibraryDependencyTarget.ExternalProject)))
            {
                // Find the root directory of the parent project if one exists.
                // This is used for resolving global json.
                var parentProjectRoot = GetRootPathForParentProject(outerEdge);

                foreach (var provider in _context.ProjectLibraryProviders)
                {
                    if (provider.SupportsType(libraryRange.TypeConstraint))
                    {
                        var match = provider.GetLibrary(libraryRange, framework, parentProjectRoot);
                        if (match != null)
                        {
                            result = new LocalMatch
                            {
                                LocalLibrary  = match,
                                Library       = match.Identity,
                                LocalProvider = provider,
                                Provider      = new LocalDependencyProvider(provider),
                                Path          = match.Path,
                            };
                        }
                    }
                }
            }

            return(Task.FromResult <RemoteMatch>(result));
        }