public DependenciesProjectTreeProvider( IProjectThreadingService threadingService, UnconfiguredProject project, IDependenciesSnapshotProvider dependenciesSnapshotProvider, [Import(DependencySubscriptionsHost.DependencySubscriptionsHostContract)] ICrossTargetSubscriptionsHost dependenciesHost, [Import(ExportContractNames.Scopes.UnconfiguredProject)] IProjectAsynchronousTasksService tasksService, IDependencyTreeTelemetryService treeTelemetryService) : base(threadingService, project) { ProjectTreePropertiesProviders = new OrderPrecedenceImportCollection <IProjectTreePropertiesProvider>( ImportOrderPrecedenceComparer.PreferenceOrder.PreferredComesLast, projectCapabilityCheckProvider: project); ViewProviders = new OrderPrecedenceImportCollection <IDependenciesTreeViewProvider>( ImportOrderPrecedenceComparer.PreferenceOrder.PreferredComesFirst, projectCapabilityCheckProvider: project); DependenciesSnapshotProvider = dependenciesSnapshotProvider; DependenciesHost = dependenciesHost; TasksService = tasksService; _treeTelemetryService = treeTelemetryService; project.ProjectUnloading += OnUnconfiguredProjectUnloading; }
public DependenciesProjectTreeProvider( IProjectThreadingService threadingService, IProjectAccessor projectAccessor, UnconfiguredProject unconfiguredProject, IDependenciesSnapshotProvider dependenciesSnapshotProvider, [Import(DependenciesSnapshotProvider.DependencySubscriptionsHostContract)] ICrossTargetSubscriptionsHost dependenciesHost, [Import(ExportContractNames.Scopes.UnconfiguredProject)] IProjectAsynchronousTasksService tasksService, IDependencyTreeTelemetryService treeTelemetryService) : base(threadingService, unconfiguredProject) { _projectTreePropertiesProviders = new OrderPrecedenceImportCollection <IProjectTreePropertiesProvider>( ImportOrderPrecedenceComparer.PreferenceOrder.PreferredComesLast, projectCapabilityCheckProvider: unconfiguredProject); _viewProviders = new OrderPrecedenceImportCollection <IDependenciesTreeViewProvider>( ImportOrderPrecedenceComparer.PreferenceOrder.PreferredComesFirst, projectCapabilityCheckProvider: unconfiguredProject); _dependenciesSnapshotProvider = dependenciesSnapshotProvider; _dependenciesHost = dependenciesHost; _tasksService = tasksService; _projectAccessor = projectAccessor; _treeTelemetryService = treeTelemetryService; // Hook this so we can unregister the snapshot change event when the project unloads unconfiguredProject.ProjectUnloading += OnUnconfiguredProjectUnloading; Task OnUnconfiguredProjectUnloading(object sender, EventArgs args) { UnconfiguredProject.ProjectUnloading -= OnUnconfiguredProjectUnloading; _snapshotEventListener?.Dispose(); return(Task.CompletedTask); } }
public DependenciesSnapshotProvider( IUnconfiguredProjectCommonServices commonServices, Lazy <AggregateCrossTargetProjectContextProvider> contextProvider, IUnconfiguredProjectTasksService tasksService, IActiveConfiguredProjectSubscriptionService activeConfiguredProjectSubscriptionService, IActiveProjectConfigurationRefreshService activeProjectConfigurationRefreshService, ITargetFrameworkProvider targetFrameworkProvider, IDependencyTreeTelemetryService dependencyTreeTelemetryService) : base(commonServices.ThreadingService.JoinableTaskContext) { _commonServices = commonServices; _tasksService = tasksService; _activeConfiguredProjectSubscriptionService = activeConfiguredProjectSubscriptionService; _targetFrameworkProvider = targetFrameworkProvider; _dependencyTreeTelemetryService = dependencyTreeTelemetryService; _dependencySubscribers = new OrderPrecedenceImportCollection <IDependencyCrossTargetSubscriber>( projectCapabilityCheckProvider: commonServices.Project); _snapshotFilters = new OrderPrecedenceImportCollection <IDependenciesSnapshotFilter>( ImportOrderPrecedenceComparer.PreferenceOrder.PreferredComesLast, projectCapabilityCheckProvider: commonServices.Project); _subTreeProviders = new OrderPrecedenceImportCollection <IProjectDependenciesSubTreeProvider>( ImportOrderPrecedenceComparer.PreferenceOrder.PreferredComesLast, projectCapabilityCheckProvider: commonServices.Project); _context = new ContextTracker(targetFrameworkProvider, commonServices, contextProvider, activeProjectConfigurationRefreshService); _snapshot = new SnapshotUpdater(commonServices.ThreadingService, tasksService.UnloadCancellationToken); _disposables = new DisposableBag { _snapshot, _contextUpdateGate }; }
public DependencyRulesSubscriber( IUnconfiguredProjectCommonServices commonServices, IUnconfiguredProjectTasksService tasksService, IDependencyTreeTelemetryService treeTelemetryService) : base(commonServices.ThreadingService, tasksService) { _handlers = new OrderPrecedenceImportCollection <IDependenciesRuleHandler>( projectCapabilityCheckProvider: commonServices.Project); _treeTelemetryService = treeTelemetryService; _watchedJointRules = new Lazy <string[]>(() => GetRuleNames(RuleSource.Joint)); _watchedEvaluationRules = new Lazy <string[]>(() => GetRuleNames(RuleSource.Evaluation)); string[] GetRuleNames(RuleSource source) { var rules = new HashSet <string>(StringComparers.RuleNames); foreach (Lazy <IDependenciesRuleHandler, IOrderPrecedenceMetadataView> item in _handlers) { rules.Add(item.Value.EvaluatedRuleName); if (source == RuleSource.Joint) { rules.Add(item.Value.ResolvedRuleName); } } return(rules.ToArray()); } }
public DependencyRulesSubscriber( IUnconfiguredProjectCommonServices commonServices, [Import(ExportContractNames.Scopes.UnconfiguredProject)] IProjectAsynchronousTasksService tasksService, IDependencyTreeTelemetryService treeTelemetryService) : base(commonServices, tasksService, treeTelemetryService) { DependencyRuleHandlers = new OrderPrecedenceImportCollection <ICrossTargetRuleHandler <DependenciesRuleChangeContext> >( projectCapabilityCheckProvider: commonServices.Project); }
public CrossTargetRuleSubscriberBase( IUnconfiguredProjectCommonServices commonServices, IProjectAsynchronousTasksService tasksService, IDependencyTreeTelemetryService treeTelemetryService) : base(synchronousDisposal: true) { _commonServices = commonServices; _tasksService = tasksService; _treeTelemetryService = treeTelemetryService; }
public CrossTargetRuleSubscriberBase( IUnconfiguredProjectCommonServices commonServices, IProjectAsynchronousTasksService tasksService, IDependencyTreeTelemetryService treeTelemetryService) : base(commonServices.ThreadingService.JoinableTaskContext) { _tasksService = tasksService; _treeTelemetryService = treeTelemetryService; _evaluationSubscriptionLinks = new List <IDisposable>(); _designTimeBuildSubscriptionLinks = new List <IDisposable>(); }
public DependencyRulesSubscriber( IUnconfiguredProjectCommonServices commonServices, IUnconfiguredProjectTasksService tasksService, IDependencyTreeTelemetryService treeTelemetryService) : base(commonServices.ThreadingService.JoinableTaskContext) { _handlers = new OrderPrecedenceImportCollection <IDependenciesRuleHandler>( projectCapabilityCheckProvider: commonServices.Project); _commonServices = commonServices; _tasksService = tasksService; _treeTelemetryService = treeTelemetryService; }
public DependencyRulesSubscriber( IUnconfiguredProjectCommonServices commonServices, [Import(ExportContractNames.Scopes.UnconfiguredProject)] IProjectAsynchronousTasksService tasksService, IDependencyTreeTelemetryService treeTelemetryService) : base(synchronousDisposal: true) { _handlers = new OrderPrecedenceImportCollection <IDependenciesRuleHandler>( projectCapabilityCheckProvider: commonServices.Project); _commonServices = commonServices; _tasksService = tasksService; _treeTelemetryService = treeTelemetryService; }