public override bool HandleChanges(IGraphContext graphContext, SnapshotChangedEventArgs e) { IDependenciesSnapshot snapshot = e.Snapshot; if (snapshot == null || e.Token.IsCancellationRequested) { return(false); } foreach (GraphNode inputGraphNode in graphContext.InputNodes.ToList()) { string existingDependencyId = inputGraphNode.GetValue <string>(DependenciesGraphSchema.DependencyIdProperty); if (string.IsNullOrEmpty(existingDependencyId)) { continue; } string projectPath = inputGraphNode.Id.GetValue(CodeGraphNodeIdName.Assembly); if (string.IsNullOrEmpty(projectPath)) { continue; } IDependency updatedDependency = GetDependency(projectPath, existingDependencyId, out IDependenciesSnapshot updatedSnapshot); if (updatedDependency == null) { continue; } IDependenciesGraphViewProvider viewProvider = ViewProviders .FirstOrDefaultValue((x, d) => x.SupportsDependency(d), updatedDependency); if (viewProvider == null) { continue; } if (!viewProvider.ShouldTrackChanges(projectPath, snapshot.ProjectPath, updatedDependency)) { continue; } using (var scope = new GraphTransactionScope()) { viewProvider.TrackChanges( graphContext, projectPath, updatedDependency, inputGraphNode, updatedSnapshot.Targets[updatedDependency.TargetFramework]); scope.Complete(); } } return(false); }