Exemple #1
0
        private ITargetedDependenciesSnapshot GetSnapshot(string projectPath, IDependency dependency, out string dependencyProjectPath)
        {
            dependencyProjectPath = dependency.GetActualPath(projectPath);

            var snapshotProvider = AggregateSnapshotProvider.GetSnapshotProvider(dependencyProjectPath);

            if (snapshotProvider == null)
            {
                return(null);
            }

            var snapshot = snapshotProvider.CurrentSnapshot;

            if (snapshot == null)
            {
                return(null);
            }

            var targetFramework = TargetFrameworkProvider.GetNearestFramework(
                dependency.Snapshot.TargetFramework, snapshot.Targets.Keys);

            if (targetFramework == null)
            {
                return(null);
            }

            return(snapshot.Targets[targetFramework]);
        }
Exemple #2
0
        public override bool ShouldTrackChanges(string projectPath, string updatedProjectPath, IDependency dependency)
        {
            var dependencyProjectPath = dependency.GetActualPath(projectPath);

            return(!string.IsNullOrEmpty(dependencyProjectPath) &&
                   dependencyProjectPath.Equals(updatedProjectPath, StringComparison.OrdinalIgnoreCase));
        }
Exemple #3
0
        public override bool MatchSearchResults(
            string projectPath,
            IDependency topLevelDependency,
            Dictionary <string, HashSet <IDependency> > searchResultsPerContext,
            out HashSet <IDependency> topLevelDependencyMatches)
        {
            topLevelDependencyMatches = new HashSet <IDependency>();

            if (!topLevelDependency.Flags.Contains(DependencyTreeFlags.ProjectNodeFlags))
            {
                return(false);
            }

            if (!topLevelDependency.Resolved || !topLevelDependency.Visible)
            {
                return(true);
            }

            var projectFullPath = topLevelDependency.GetActualPath(projectPath);

            if (!searchResultsPerContext.TryGetValue(projectFullPath, out HashSet <IDependency> contextResults) ||
                contextResults.Count == 0)
            {
                return(true);
            }

            var nearestTargetFramework = TargetFrameworkProvider.GetNearestFramework(
                topLevelDependency.Snapshot.TargetFramework,
                contextResults.Select(x => x.Snapshot.TargetFramework));

            if (nearestTargetFramework == null)
            {
                return(true);
            }

            var targetedResultsFromContext =
                contextResults.Where(x => nearestTargetFramework.Equals(x.Snapshot.TargetFramework));

            if (targetedResultsFromContext != null)
            {
                topLevelDependencyMatches.AddRange(targetedResultsFromContext);
            }

            return(true);
        }