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]); }
public override bool ShouldTrackChanges(string projectPath, string updatedProjectPath, IDependency dependency) { var dependencyProjectPath = dependency.GetActualPath(projectPath); return(!string.IsNullOrEmpty(dependencyProjectPath) && dependencyProjectPath.Equals(updatedProjectPath, StringComparison.OrdinalIgnoreCase)); }
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); }