public override Task HandleAsync( IProjectVersionedValue <Tuple <IProjectSubscriptionUpdate, IProjectCatalogSnapshot, IProjectCapabilitiesSnapshot> > e, IImmutableDictionary <string, IProjectChangeDescription> projectChanges, ITargetedProjectContext context, bool isActiveContext, DependenciesRuleChangeContext ruleChangeContext) { if (projectChanges.TryGetValue(UnresolvedRuleName, out IProjectChangeDescription unresolvedChanges) && unresolvedChanges.Difference.AnyChanges) { HandleChangesForRule( unresolvedChanges, ruleChangeContext, context.TargetFramework, resolved: false); } var caseInsensitiveUnresolvedChanges = new HashSet <string>(StringComparer.OrdinalIgnoreCase); caseInsensitiveUnresolvedChanges.AddRange(unresolvedChanges.After.Items.Keys); if (projectChanges.TryGetValue(ResolvedRuleName, out IProjectChangeDescription resolvedChanges) && resolvedChanges.Difference.AnyChanges) { HandleChangesForRule( resolvedChanges, ruleChangeContext, context.TargetFramework, resolved: true, unresolvedChanges: caseInsensitiveUnresolvedChanges); } return(Task.CompletedTask); }
public override void Handle( IImmutableDictionary <string, IProjectChangeDescription> changesByRuleName, ITargetFramework targetFramework, DependenciesRuleChangeContext ruleChangeContext) { var caseInsensitiveUnresolvedChanges = new HashSet <string>(StringComparer.OrdinalIgnoreCase); if (changesByRuleName.TryGetValue(UnresolvedRuleName, out IProjectChangeDescription unresolvedChanges)) { caseInsensitiveUnresolvedChanges.AddRange(unresolvedChanges.After.Items.Keys); if (unresolvedChanges.Difference.AnyChanges) { HandleChangesForRule( unresolvedChanges, ruleChangeContext, targetFramework, resolved: false); } } if (changesByRuleName.TryGetValue(ResolvedRuleName, out IProjectChangeDescription resolvedChanges) && resolvedChanges.Difference.AnyChanges) { HandleChangesForRule( resolvedChanges, ruleChangeContext, targetFramework, resolved: true, unresolvedChanges: caseInsensitiveUnresolvedChanges); } }
private void HandleChangesForRule( IProjectChangeDescription projectChange, DependenciesRuleChangeContext ruleChangeContext, ITargetFramework targetFramework, bool resolved, HashSet <string> unresolvedChanges = null) { Requires.NotNull(targetFramework, nameof(targetFramework)); foreach (string removedItem in projectChange.Difference.RemovedItems) { if (PackageDependencyMetadata.TryGetMetadata( removedItem, resolved, properties: projectChange.Before.GetProjectItemProperties(removedItem), unresolvedChanges, targetFramework, TargetFrameworkProvider, out PackageDependencyMetadata metadata)) { ruleChangeContext.IncludeRemovedChange(targetFramework, ProviderTypeString, metadata.OriginalItemSpec); } } foreach (string changedItem in projectChange.Difference.ChangedItems) { if (PackageDependencyMetadata.TryGetMetadata( changedItem, resolved, properties: projectChange.After.GetProjectItemProperties(changedItem), unresolvedChanges, targetFramework, TargetFrameworkProvider, out PackageDependencyMetadata metadata)) { ruleChangeContext.IncludeRemovedChange(targetFramework, ProviderTypeString, metadata.OriginalItemSpec); ruleChangeContext.IncludeAddedChange(targetFramework, metadata.CreateDependencyModel()); } } foreach (string addedItem in projectChange.Difference.AddedItems) { if (PackageDependencyMetadata.TryGetMetadata( addedItem, resolved, properties: projectChange.After.GetProjectItemProperties(addedItem), unresolvedChanges, targetFramework, TargetFrameworkProvider, out PackageDependencyMetadata metadata)) { ruleChangeContext.IncludeAddedChange(targetFramework, metadata.CreateDependencyModel()); } } }
private void HandleChangesForRule( IProjectChangeDescription projectChange, DependenciesRuleChangeContext ruleChangeContext, ITargetFramework targetFramework, bool resolved, HashSet <string> unresolvedChanges = null) { Requires.NotNull(targetFramework, nameof(targetFramework)); if (targetFramework == null) { return; } foreach (string removedItem in projectChange.Difference.RemovedItems) { IImmutableDictionary <string, string> properties = GetProjectItemProperties(projectChange.Before, removedItem); IDependencyModel model = GetDependencyModel(removedItem, resolved, properties, projectChange, unresolvedChanges, targetFramework); if (model == null) { continue; } ruleChangeContext.IncludeRemovedChange(targetFramework, model); } foreach (string changedItem in projectChange.Difference.ChangedItems) { IImmutableDictionary <string, string> properties = GetProjectItemProperties(projectChange.After, changedItem); IDependencyModel model = GetDependencyModel(changedItem, resolved, properties, projectChange, unresolvedChanges, targetFramework); if (model == null) { continue; } ruleChangeContext.IncludeRemovedChange(targetFramework, model); ruleChangeContext.IncludeAddedChange(targetFramework, model); } foreach (string addedItem in projectChange.Difference.AddedItems) { IImmutableDictionary <string, string> properties = GetProjectItemProperties(projectChange.After, addedItem); IDependencyModel model = GetDependencyModel(addedItem, resolved, properties, projectChange, unresolvedChanges, targetFramework); if (model == null) { continue; } ruleChangeContext.IncludeAddedChange(targetFramework, model); } }
public DependencySubscriptionChangedEventArgs(DependenciesRuleChangeContext context) { Context = context; }
public DependencySubscriptionChangedEventArgs(DependenciesRuleChangeContext context) { ActiveTarget = context.ActiveTarget; Catalogs = context.Catalogs; Changes = context.Changes; }