コード例 #1
0
 protected DependencyRulesSubscriberBase(
     IProjectThreadingService threadingService,
     IUnconfiguredProjectTasksService tasksService)
     : base(threadingService.JoinableTaskContext)
 {
     _tasksService = tasksService;
 }
コード例 #2
0
 public WorkspaceProjectContextHostInitiator(UnconfiguredProject project, IUnconfiguredProjectTasksService tasksService, IActiveWorkspaceProjectContextHost activeWorkspaceProjectContextHost, IProjectFaultHandlerService projectFaultHandler)
 {
     _project      = project;
     _tasksService = tasksService;
     _activeWorkspaceProjectContextHost = activeWorkspaceProjectContextHost;
     _projectFaultHandler = projectFaultHandler;
 }
        public DependenciesSnapshotProvider(
            IUnconfiguredProjectCommonServices commonServices,
            Lazy <AggregateCrossTargetProjectContextProvider> contextProvider,
            IUnconfiguredProjectTasksService tasksService,
            IActiveConfiguredProjectSubscriptionService activeConfiguredProjectSubscriptionService,
            IActiveProjectConfigurationRefreshService activeProjectConfigurationRefreshService,
            ITargetFrameworkProvider targetFrameworkProvider)
            : base(commonServices.ThreadingService.JoinableTaskContext)
        {
            _commonServices = commonServices;
            _tasksService   = tasksService;
            _activeConfiguredProjectSubscriptionService = activeConfiguredProjectSubscriptionService;
            _targetFrameworkProvider = targetFrameworkProvider;

            _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
            };
        }
コード例 #4
0
        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());
            }
        }
コード例 #5
0
 public ActiveConfiguredProjectsLoader(UnconfiguredProject project, IActiveConfigurationGroupService activeConfigurationGroupService, IUnconfiguredProjectTasksService tasksService)
     : base(synchronousDisposal: true)
 {
     _project = project;
     _activeConfigurationGroupService = activeConfigurationGroupService;
     _tasksService = tasksService;
     _targetBlock  = new ActionBlock <IProjectVersionedValue <IConfigurationGroup <ProjectConfiguration> > >(OnActiveConfigurationsChanged);
 }
コード例 #6
0
 public DependencySharedProjectsSubscriber(
     IProjectThreadingService threadingService,
     IUnconfiguredProjectTasksService tasksService,
     DependenciesSnapshotProvider dependenciesSnapshotProvider)
     : base(threadingService, tasksService)
 {
     _dependenciesSnapshotProvider = dependenciesSnapshotProvider;
 }
コード例 #7
0
 public DependencySharedProjectsSubscriber(
     IUnconfiguredProjectTasksService tasksService,
     IDependenciesSnapshotProvider dependenciesSnapshotProvider)
     : base(synchronousDisposal: true)
 {
     _tasksService = tasksService;
     _dependenciesSnapshotProvider = dependenciesSnapshotProvider;
 }
コード例 #8
0
 public ActiveConfiguredProjectsLoader(UnconfiguredProject project, IActiveConfigurationGroupService activeConfigurationGroupService, IUnconfiguredProjectTasksService tasksService)
     : base(synchronousDisposal: false)
 {
     _project = project;
     _activeConfigurationGroupService = activeConfigurationGroupService;
     _tasksService = tasksService;
     _targetBlock  = DataflowBlockFactory.CreateActionBlock <IProjectVersionedValue <IConfigurationGroup <ProjectConfiguration> > >(OnActiveConfigurationsChangedAsync, project, ProjectFaultSeverity.LimitedFunctionality);
 }
コード例 #9
0
        public VsSafeProjectGuidService(UnconfiguredProject project, IUnconfiguredProjectTasksService tasksService)
        {
            _tasksService = tasksService;

#pragma warning disable RS0030 // IProjectGuidService is banned
            ProjectGuidServices = new OrderPrecedenceImportCollection <IProjectGuidService>(projectCapabilityCheckProvider: project);
#pragma warning restore RS0030
        }
コード例 #10
0
        private static VsSafeProjectGuidService CreateInstance(IUnconfiguredProjectTasksService tasksService = null)
        {
            var project = UnconfiguredProjectFactory.Create();

            tasksService = tasksService ?? IUnconfiguredProjectTasksServiceFactory.ImplementPrioritizedProjectLoadedInHost(() => Task.CompletedTask);

            return(new VsSafeProjectGuidService(project, tasksService));
        }
コード例 #11
0
 public ActiveWorkspaceProjectContextHost(
     IActiveConfiguredValue <IWorkspaceProjectContextHost?> activeHost,
     IActiveConfiguredProjectProvider activeConfiguredProjectProvider,
     IUnconfiguredProjectTasksService tasksService)
 {
     _activeHost = activeHost;
     _activeConfiguredProjectProvider = activeConfiguredProjectProvider;
     _tasksService = tasksService;
 }
コード例 #12
0
 internal ImportTreeProvider(
     IProjectThreadingService threadingService,
     IActiveConfiguredProjectSubscriptionService projectSubscriptionService,
     IUnconfiguredProjectTasksService unconfiguredProjectTasksService,
     UnconfiguredProject unconfiguredProject)
     : base(threadingService, unconfiguredProject, useDisplayOrdering: true)
 {
     _projectSubscriptionService      = projectSubscriptionService;
     _unconfiguredProjectTasksService = unconfiguredProjectTasksService;
 }
 public SDKVersionTelemetryServiceInstance(
     IUnconfiguredProjectCommonServices projectVsServices,
     ISafeProjectGuidService projectGuidService,
     ITelemetryService telemetryService,
     IUnconfiguredProjectTasksService unconfiguredProjectTasksService)
     : base(synchronousDisposal: true)
 {
     _projectVsServices  = projectVsServices;
     _projectGuidService = projectGuidService;
     _telemetryService   = telemetryService;
     _unconfiguredProjectTasksService = unconfiguredProjectTasksService;
 }
コード例 #14
0
 public AggregateCrossTargetProjectContextProvider(
     IUnconfiguredProjectCommonServices commonServices,
     IUnconfiguredProjectTasksService tasksService,
     IActiveConfiguredProjectsProvider activeConfiguredProjectsProvider,
     ITargetFrameworkProvider targetFrameworkProvider)
     : base(synchronousDisposal: true)
 {
     _commonServices = commonServices;
     _tasksService   = tasksService;
     _activeConfiguredProjectsProvider = activeConfiguredProjectsProvider;
     _targetFrameworkProvider          = targetFrameworkProvider;
 }
コード例 #15
0
ファイル: Renamer.cs プロジェクト: etbyrd/project-system
 internal Renamer(IUnconfiguredProjectVsServices projectVsServices,
                  IUnconfiguredProjectTasksService unconfiguredProjectTasksService,
                  VisualStudioWorkspace workspace,
                  IVsService <Shell.Interop.SDTE, EnvDTE.DTE> dte,
                  IEnvironmentOptions environmentOptions,
                  IUserNotificationServices userNotificationServices,
                  IRoslynServices roslynServices,
                  IWaitIndicator waitService,
                  IRefactorNotifyService refactorNotifyService)
     : this(projectVsServices, unconfiguredProjectTasksService, workspace as Workspace, dte, environmentOptions, userNotificationServices, roslynServices, waitService, refactorNotifyService)
 {
 }
コード例 #16
0
 public SDKVersionTelemetryServiceInstance(
     IUnconfiguredProjectVsServices projectVsServices,
     ISafeProjectGuidService projectGuidService,
     ITelemetryService telemetryService,
     IUnconfiguredProjectTasksService unconfiguredProjectTasksService)
     : base(projectVsServices.ThreadingService.JoinableTaskContext)
 {
     _projectVsServices  = projectVsServices;
     _projectGuidService = projectGuidService;
     _telemetryService   = telemetryService;
     _unconfiguredProjectTasksService = unconfiguredProjectTasksService;
 }
コード例 #17
0
 public ProjectAssetFileWatcher(
     [Import(ContractNames.ProjectTreeProviders.FileSystemDirectoryTree)] IProjectTreeProvider fileSystemTreeProvider,
     IUnconfiguredProjectCommonServices projectServices,
     IUnconfiguredProjectTasksService projectTasksService,
     IActiveConfiguredProjectSubscriptionService activeConfiguredProjectSubscriptionService)
     : this(
         AsyncServiceProvider.GlobalProvider,
         fileSystemTreeProvider,
         projectServices,
         projectTasksService,
         activeConfiguredProjectSubscriptionService)
 {
 }
コード例 #18
0
 public WorkspaceProjectContextHostInitiator(
     UnconfiguredProject project,
     IUnconfiguredProjectTasksService tasksService,
     IActiveWorkspaceProjectContextHost activeWorkspaceProjectContextHost,
     IProjectFaultHandlerService projectFaultHandler,
     IUnconfiguredProjectLanguageServiceTelemetryService languageServiceTelemetryService)
 {
     _project      = project;
     _tasksService = tasksService;
     _activeWorkspaceProjectContextHost = activeWorkspaceProjectContextHost;
     _projectFaultHandler             = projectFaultHandler;
     _languageServiceTelemetryService = languageServiceTelemetryService;
 }
 public AggregateCrossTargetProjectContextProvider(
     IUnconfiguredProjectCommonServices commonServices,
     IUnconfiguredProjectTasksService tasksService,
     ITaskScheduler taskScheduler,
     IActiveConfiguredProjectsProvider activeConfiguredProjectsProvider,
     ITargetFrameworkProvider targetFrameworkProvider)
 {
     _commonServices = commonServices;
     _tasksService   = tasksService;
     _taskScheduler  = taskScheduler;
     _activeConfiguredProjectsProvider = activeConfiguredProjectsProvider;
     _targetFrameworkProvider          = targetFrameworkProvider;
 }
コード例 #20
0
        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;
        }
コード例 #21
0
 public ProjectAssetFileWatcher(
     IVsService <SVsFileChangeEx, IVsAsyncFileChangeEx> fileChangeService,
     [Import(ContractNames.ProjectTreeProviders.FileSystemDirectoryTree)] IProjectTreeProvider fileSystemTreeProvider,
     IUnconfiguredProjectCommonServices projectServices,
     IUnconfiguredProjectTasksService projectTasksService,
     IActiveConfiguredProjectSubscriptionService activeConfiguredProjectSubscriptionService)
     : base(projectServices.ThreadingService.JoinableTaskContext)
 {
     _fileChangeService      = fileChangeService;
     _fileSystemTreeProvider = fileSystemTreeProvider;
     _projectServices        = projectServices;
     _projectTasksService    = projectTasksService;
     _activeConfiguredProjectSubscriptionService = activeConfiguredProjectSubscriptionService;
 }
 public WorkspaceProjectContextHostInstance(ConfiguredProject project,
                                            IProjectThreadingService threadingService,
                                            IUnconfiguredProjectTasksService tasksService,
                                            IProjectSubscriptionService projectSubscriptionService,
                                            IWorkspaceProjectContextProvider workspaceProjectContextProvider,
                                            IActiveEditorContextTracker activeWorkspaceProjectContextTracker,
                                            ExportFactory <IApplyChangesToWorkspaceContext> applyChangesToWorkspaceContextFactory)
     : base(threadingService.JoinableTaskContext)
 {
     _project = project;
     _projectSubscriptionService = projectSubscriptionService;
     _tasksService = tasksService;
     _workspaceProjectContextProvider       = workspaceProjectContextProvider;
     _applyChangesToWorkspaceContextFactory = applyChangesToWorkspaceContextFactory;
     _activeWorkspaceProjectContextTracker  = activeWorkspaceProjectContextTracker;
 }
コード例 #23
0
        public DependenciesSnapshotProvider(
            IUnconfiguredProjectCommonServices commonServices,
            Lazy <IAggregateCrossTargetProjectContextProvider> contextProvider,
            IUnconfiguredProjectTasksService tasksService,
            IActiveConfiguredProjectSubscriptionService activeConfiguredProjectSubscriptionService,
            IActiveProjectConfigurationRefreshService activeProjectConfigurationRefreshService,
            ITargetFrameworkProvider targetFrameworkProvider,
            IAggregateDependenciesSnapshotProvider aggregateSnapshotProvider)
            : base(commonServices.ThreadingService.JoinableTaskContext)
        {
            Requires.NotNull(contextProvider, nameof(contextProvider));
            Requires.NotNull(tasksService, nameof(tasksService));
            Requires.NotNull(activeConfiguredProjectSubscriptionService, nameof(activeConfiguredProjectSubscriptionService));
            Requires.NotNull(activeProjectConfigurationRefreshService, nameof(activeProjectConfigurationRefreshService));
            Requires.NotNull(targetFrameworkProvider, nameof(targetFrameworkProvider));
            Requires.NotNull(aggregateSnapshotProvider, nameof(aggregateSnapshotProvider));

            _commonServices  = commonServices;
            _contextProvider = contextProvider;
            _tasksService    = tasksService;
            _activeConfiguredProjectSubscriptionService = activeConfiguredProjectSubscriptionService;
            _activeProjectConfigurationRefreshService   = activeProjectConfigurationRefreshService;
            _targetFrameworkProvider = targetFrameworkProvider;

            _currentSnapshot = DependenciesSnapshot.CreateEmpty(_commonServices.Project.FullPath);

            _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);

            _dependenciesUpdateScheduler = new TaskDelayScheduler(
                _dependenciesUpdateThrottleInterval,
                commonServices.ThreadingService,
                tasksService.UnloadCancellationToken);

            _snapshotChangedSource = DataflowBlockSlim.CreateBroadcastBlock <SnapshotChangedEventArgs>("DependenciesSnapshot {1}", skipIntermediateInputData: true);

            aggregateSnapshotProvider.RegisterSnapshotProvider(this);
        }
コード例 #24
0
 public StartupProjectRegistrar(
     UnconfiguredProject project,
     IUnconfiguredProjectTasksService projectTasksService,
     IVsService <SVsStartupProjectsListService, IVsStartupProjectsListService> startupProjectsListService,
     IProjectThreadingService threadingService,
     ISafeProjectGuidService projectGuidService,
     IActiveConfiguredProjectSubscriptionService projectSubscriptionService,
     ActiveConfiguredProject <DebuggerLaunchProviders> launchProviders)
     : base(threadingService.JoinableTaskContext)
 {
     _project                    = project;
     _projectTasksService        = projectTasksService;
     _startupProjectsListService = startupProjectsListService;
     _projectGuidService         = projectGuidService;
     _projectSubscriptionService = projectSubscriptionService;
     _launchProviders            = launchProviders;
 }
コード例 #25
0
 public LanguageServiceHost(IUnconfiguredProjectCommonServices commonServices,
                            Lazy <IProjectContextProvider> contextProvider,
                            [Import(ExportContractNames.Scopes.UnconfiguredProject)] IProjectAsynchronousTasksService tasksService,
                            IActiveProjectConfigurationRefreshService activeProjectConfigurationRefreshService,
                            LanguageServiceHandlerManager languageServiceHandlerManager,
                            IUnconfiguredProjectTasksService unconfiguredProjectTasksService)
     : base(commonServices.ThreadingService.JoinableTaskContext)
 {
     _commonServices  = commonServices;
     _contextProvider = contextProvider;
     _tasksService    = tasksService;
     _activeProjectConfigurationRefreshService = activeProjectConfigurationRefreshService;
     _languageServiceHandlerManager            = languageServiceHandlerManager;
     _unconfiguredProjectTasksService          = unconfiguredProjectTasksService;
     _evaluationSubscriptionLinks            = new List <IDisposable>();
     _designTimeBuildSubscriptionLinks       = new List <IDisposable>();
     _projectConfigurationsWithSubscriptions = new HashSet <ProjectConfiguration>();
 }
コード例 #26
0
        public ProjectAssetFileWatcher(
            IAsyncServiceProvider asyncServiceProvider,
            IProjectTreeProvider fileSystemTreeProvider,
            IUnconfiguredProjectCommonServices projectServices,
            IUnconfiguredProjectTasksService projectTasksService,
            IActiveConfiguredProjectSubscriptionService activeConfiguredProjectSubscriptionService)
            : base(projectServices.ThreadingService.JoinableTaskContext)
        {
            Requires.NotNull(asyncServiceProvider, nameof(asyncServiceProvider));
            Requires.NotNull(fileSystemTreeProvider, nameof(fileSystemTreeProvider));
            Requires.NotNull(projectServices, nameof(projectServices));
            Requires.NotNull(projectTasksService, nameof(projectTasksService));
            Requires.NotNull(activeConfiguredProjectSubscriptionService, nameof(activeConfiguredProjectSubscriptionService));

            _asyncServiceProvider   = asyncServiceProvider;
            _fileSystemTreeProvider = fileSystemTreeProvider;
            _projectServices        = projectServices;
            _projectTasksService    = projectTasksService;
            _activeConfiguredProjectSubscriptionService = activeConfiguredProjectSubscriptionService;
        }
コード例 #27
0
 internal Renamer(IUnconfiguredProjectVsServices projectVsServices,
                  IUnconfiguredProjectTasksService unconfiguredProjectTasksService,
                  [Import(typeof(VisualStudioWorkspace))] Workspace workspace,
                  IVsUIService <Shell.Interop.SDTE, DTE> dte,
                  IEnvironmentOptions environmentOptions,
                  IUserNotificationServices userNotificationServices,
                  IRoslynServices roslynServices,
                  IWaitIndicator waitService,
                  IRefactorNotifyService refactorNotifyService)
 {
     _projectVsServices = projectVsServices;
     _unconfiguredProjectTasksService = unconfiguredProjectTasksService;
     _workspace                = workspace;
     _dte                      = dte;
     _environmentOptions       = environmentOptions;
     _userNotificationServices = userNotificationServices;
     _roslynServices           = roslynServices;
     _waitService              = waitService;
     _refactorNotifyService    = refactorNotifyService;
 }
コード例 #28
0
        public DependencySubscriptionsHost(
            IUnconfiguredProjectCommonServices commonServices,
            Lazy <IAggregateCrossTargetProjectContextProvider> contextProvider,
            [Import(ExportContractNames.Scopes.UnconfiguredProject)] IProjectAsynchronousTasksService tasksService,
            IActiveConfiguredProjectSubscriptionService activeConfiguredProjectSubscriptionService,
            IActiveProjectConfigurationRefreshService activeProjectConfigurationRefreshService,
            ITargetFrameworkProvider targetFrameworkProvider,
            IAggregateDependenciesSnapshotProvider aggregateSnapshotProvider,
            IUnconfiguredProjectTasksService unconfiguredProjectTasksService)
            : base(commonServices,
                   contextProvider,
                   tasksService,
                   activeConfiguredProjectSubscriptionService,
                   activeProjectConfigurationRefreshService,
                   targetFrameworkProvider,
                   unconfiguredProjectTasksService)
        {
            CommonServices        = commonServices;
            DependencySubscribers = new OrderPrecedenceImportCollection <IDependencyCrossTargetSubscriber>(
                projectCapabilityCheckProvider: commonServices.Project);

            SnapshotFilters = new OrderPrecedenceImportCollection <IDependenciesSnapshotFilter>(
                projectCapabilityCheckProvider: commonServices.Project,
                orderingStyle: ImportOrderPrecedenceComparer.PreferenceOrder.PreferredComesLast);

            SubTreeProviders = new OrderPrecedenceImportCollection <IProjectDependenciesSubTreeProvider>(
                ImportOrderPrecedenceComparer.PreferenceOrder.PreferredComesLast,
                projectCapabilityCheckProvider: commonServices.Project);

            DependenciesUpdateScheduler = new TaskDelayScheduler(
                _dependenciesUpdateThrottleInterval,
                commonServices.ThreadingService,
                tasksService.UnloadCancellationToken);

            TargetFrameworkProvider   = targetFrameworkProvider;
            AggregateSnapshotProvider = aggregateSnapshotProvider;
            ProjectFilePath           = CommonServices.Project.FullPath;
        }
コード例 #29
0
 public WorkspaceProjectContextHost(ConfiguredProject project,
                                    IProjectThreadingService threadingService,
                                    IUnconfiguredProjectTasksService tasksService,
                                    IProjectSubscriptionService projectSubscriptionService,
                                    IWorkspaceProjectContextProvider workspaceProjectContextProvider,
                                    IActiveEditorContextTracker activeWorkspaceProjectContextTracker,
                                    IActiveConfiguredProjectProvider activeConfiguredProjectProvider,
                                    ExportFactory <IApplyChangesToWorkspaceContext> applyChangesToWorkspaceContextFactory,
                                    IDataProgressTrackerService dataProgressTrackerService,
                                    ICommandLineArgumentsProvider commandLineArgumentsProvider)
     : base(threadingService.JoinableTaskContext)
 {
     _project                               = project;
     _threadingService                      = threadingService;
     _tasksService                          = tasksService;
     _projectSubscriptionService            = projectSubscriptionService;
     _workspaceProjectContextProvider       = workspaceProjectContextProvider;
     _activeWorkspaceProjectContextTracker  = activeWorkspaceProjectContextTracker;
     _activeConfiguredProjectProvider       = activeConfiguredProjectProvider;
     _applyChangesToWorkspaceContextFactory = applyChangesToWorkspaceContextFactory;
     _dataProgressTrackerService            = dataProgressTrackerService;
     _commandLineArgumentsProvider          = commandLineArgumentsProvider;
 }
コード例 #30
0
        public CrossTargetSubscriptionHostBase(IUnconfiguredProjectCommonServices commonServices,
                                               Lazy <IAggregateCrossTargetProjectContextProvider> contextProvider,
                                               [Import(ExportContractNames.Scopes.UnconfiguredProject)] IProjectAsynchronousTasksService tasksService,
                                               IActiveConfiguredProjectSubscriptionService activeConfiguredProjectSubscriptionService,
                                               IActiveProjectConfigurationRefreshService activeProjectConfigurationRefreshService,
                                               ITargetFrameworkProvider targetFrameworkProvider,
                                               IUnconfiguredProjectTasksService unconfiguredProjectTasksService)
            : base(commonServices.ThreadingService.JoinableTaskContext)
        {
            Requires.NotNull(contextProvider, nameof(contextProvider));
            Requires.NotNull(tasksService, nameof(tasksService));
            Requires.NotNull(activeConfiguredProjectSubscriptionService, nameof(activeConfiguredProjectSubscriptionService));
            Requires.NotNull(activeProjectConfigurationRefreshService, nameof(activeProjectConfigurationRefreshService));
            Requires.NotNull(targetFrameworkProvider, nameof(targetFrameworkProvider));

            _commonServices  = commonServices;
            _contextProvider = contextProvider;
            _tasksService    = tasksService;
            _activeConfiguredProjectSubscriptionService = activeConfiguredProjectSubscriptionService;
            _activeProjectConfigurationRefreshService   = activeProjectConfigurationRefreshService;
            _targetFrameworkProvider         = targetFrameworkProvider;
            _unconfiguredProjectTasksService = unconfiguredProjectTasksService;
            _evaluationSubscriptionLinks     = new List <IDisposable>();
        }