Beispiel #1
0
        /// <summary>
        ///     Returns a task that completes when the host recognizes that the project has loaded,
        ///     cancelling if the project is unloaded before it completes.
        /// </summary>
        /// <exception cref="ArgumentNullException">
        ///     <paramref name="dashboard"/> is <see langword="null"/>.
        ///     <para>
        ///         -or-
        ///     </para>
        ///     <paramref name="tasksService"/> is <see langword="null"/>.
        /// </exception>
        /// <exception cref="OperationCanceledException">
        ///     The project was unloaded before project load had finished.
        /// </exception>
        public static Task ProjectLoadedInHostWithCancellation(this IProjectAsyncLoadDashboard dashboard, IProjectAsynchronousTasksService tasksService)
        {
            Requires.NotNull(dashboard, nameof(dashboard));
            Requires.NotNull(tasksService, nameof(tasksService));

            return(dashboard.ProjectLoadedInHost.WithCancellation(tasksService.UnloadCancellationToken));
        }
        public VsSafeProjectGuidService(UnconfiguredProject project, [Import(ExportContractNames.Scopes.UnconfiguredProject)] IProjectAsynchronousTasksService tasksService, IProjectAsyncLoadDashboard loadDashboard)
        {
            _tasksService  = tasksService;
            _loadDashboard = loadDashboard;

            ProjectGuidServices = new OrderPrecedenceImportCollection <IProjectGuidService>(projectCapabilityCheckProvider: project);
        }
 public AggregateCrossTargetProjectContextProvider(
     IUnconfiguredProjectCommonServices commonServices,
     IProjectAsyncLoadDashboard asyncLoadDashboard,
     ITaskScheduler taskScheduler,
     IActiveConfiguredProjectsProvider activeConfiguredProjectsProvider,
     ITargetFrameworkProvider targetFrameworkProvider)
 {
     _commonServices     = commonServices;
     _asyncLoadDashboard = asyncLoadDashboard;
     _taskScheduler      = taskScheduler;
     _activeConfiguredProjectsProvider = activeConfiguredProjectsProvider;
     _targetFrameworkProvider          = targetFrameworkProvider;
 }
        public UnconfiguedProjectContextProvider(IUnconfiguredProjectCommonServices commonServices,
                                                 Lazy <IWorkspaceProjectContextFactory> contextFactory,
                                                 IProjectAsyncLoadDashboard asyncLoadDashboard,
                                                 ITaskScheduler taskScheduler)
        {
            Requires.NotNull(commonServices, nameof(commonServices));
            Requires.NotNull(contextFactory, nameof(contextFactory));
            Requires.NotNull(asyncLoadDashboard, nameof(asyncLoadDashboard));
            Requires.NotNull(taskScheduler, nameof(taskScheduler));

            _commonServices     = commonServices;
            _contextFactory     = contextFactory;
            _asyncLoadDashboard = asyncLoadDashboard;
            _taskScheduler      = taskScheduler;
        }
        public UnconfiguredProjectContextProvider(IUnconfiguredProjectCommonServices commonServices,
                                                  Lazy <IWorkspaceProjectContextFactory> contextFactory,
                                                  IProjectAsyncLoadDashboard asyncLoadDashboard,
                                                  ITaskScheduler taskScheduler,
                                                  IProjectHostProvider projectHostProvider,
                                                  IActiveConfiguredProjectsProvider activeConfiguredProjectsProvider)
        {
            _commonServices      = commonServices;
            _contextFactory      = contextFactory;
            _asyncLoadDashboard  = asyncLoadDashboard;
            _taskScheduler       = taskScheduler;
            _projectHostProvider = projectHostProvider;
            _activeConfiguredProjectsProvider = activeConfiguredProjectsProvider;

            _unconfiguredProjectHostObject = _projectHostProvider.UnconfiguredProjectHostObject;
        }
Beispiel #6
0
        public UnconfiguredProjectContextProvider(IUnconfiguredProjectCommonServices commonServices,
                                                  Lazy <IWorkspaceProjectContextFactory> contextFactory,
                                                  IProjectAsyncLoadDashboard asyncLoadDashboard,
                                                  ITaskScheduler taskScheduler,
                                                  IProjectHostProvider projectHostProvider,
                                                  IActiveConfiguredProjectsProvider activeConfiguredProjectsProvider)
        {
            _commonServices      = commonServices;
            _contextFactory      = contextFactory;
            _asyncLoadDashboard  = asyncLoadDashboard;
            _taskScheduler       = taskScheduler;
            _projectHostProvider = projectHostProvider;
            _activeConfiguredProjectsProvider = activeConfiguredProjectsProvider;
            _unconfiguredProjectHostObject    = _projectHostProvider.UnconfiguredProjectHostObject;

            ProjectGuidServices = new OrderPrecedenceImportCollection <IProjectGuidService>(projectCapabilityCheckProvider: commonServices.Project);
        }
Beispiel #7
0
        public AggregateCrossTargetProjectContextProvider(
            IUnconfiguredProjectCommonServices commonServices,
            IProjectAsyncLoadDashboard asyncLoadDashboard,
            ITaskScheduler taskScheduler,
            IActiveConfiguredProjectsProvider activeConfiguredProjectsProvider,
            ITargetFrameworkProvider targetFrameworkProvider)
        {
            Requires.NotNull(commonServices, nameof(commonServices));
            Requires.NotNull(asyncLoadDashboard, nameof(asyncLoadDashboard));
            Requires.NotNull(taskScheduler, nameof(taskScheduler));
            Requires.NotNull(activeConfiguredProjectsProvider, nameof(activeConfiguredProjectsProvider));
            Requires.NotNull(targetFrameworkProvider, nameof(targetFrameworkProvider));

            _commonServices     = commonServices;
            _asyncLoadDashboard = asyncLoadDashboard;
            _taskScheduler      = taskScheduler;
            _activeConfiguredProjectsProvider = activeConfiguredProjectsProvider;
            _targetFrameworkProvider          = targetFrameworkProvider;
        }
Beispiel #8
0
        public UnconfiguredProjectContextProvider(IUnconfiguredProjectCommonServices commonServices,
                                                  Lazy <IWorkspaceProjectContextFactory> contextFactory,
                                                  IProjectAsyncLoadDashboard asyncLoadDashboard,
                                                  ITaskScheduler taskScheduler,
                                                  IProjectHostProvider projectHostProvider,
                                                  ActiveConfiguredProjectsProvider activeConfiguredProjectsProvider)
        {
            Requires.NotNull(commonServices, nameof(commonServices));
            Requires.NotNull(contextFactory, nameof(contextFactory));
            Requires.NotNull(asyncLoadDashboard, nameof(asyncLoadDashboard));
            Requires.NotNull(taskScheduler, nameof(taskScheduler));
            Requires.NotNull(projectHostProvider, nameof(projectHostProvider));
            Requires.NotNull(activeConfiguredProjectsProvider, nameof(activeConfiguredProjectsProvider));

            _commonServices      = commonServices;
            _contextFactory      = contextFactory;
            _asyncLoadDashboard  = asyncLoadDashboard;
            _taskScheduler       = taskScheduler;
            _projectHostProvider = projectHostProvider;
            _activeConfiguredProjectsProvider = activeConfiguredProjectsProvider;

            _unconfiguredProjectHostObject = _projectHostProvider.UnconfiguredProjectHostObject;
        }
 /// <summary>
 /// Gets a task that completes when the host recognizes that this project is loaded.
 /// The returned task is cancelled if the project is unloaded before it completes.
 /// This extension should be used instead of waiting on ProjectLoadedInHost directly.
 /// </summary>
 public static Task ProjectLoadedInHostWithCancellation(
     this IProjectAsyncLoadDashboard dashboard, UnconfiguredProject project)
 => dashboard.ProjectLoadedInHost.WithCancellation(
     project.Services.ProjectAsynchronousTasks.UnloadCancellationToken);
Beispiel #10
0
        /// <summary>
        ///     Returns a task that completes when the host recognizes that the project has loaded,
        ///     cancelling if the project is unloaded before it completes.
        /// </summary>
        /// <exception cref="ArgumentNullException">
        ///     <paramref name="dashboard"/> is <see langword="null"/>.
        ///     <para>
        ///         -or-
        ///     </para>
        ///     <paramref name="project"/> is <see langword="null"/>.
        /// </exception>
        /// <exception cref="OperationCanceledException">
        ///     The project was unloaded before project load had finished.
        /// </exception>
        public static Task ProjectLoadedInHostWithCancellation(this IProjectAsyncLoadDashboard dashboard, UnconfiguredProject project)
        {
            Requires.NotNull(project, nameof(project));

            return(ProjectLoadedInHostWithCancellation(dashboard, project.Services.ProjectAsynchronousTasks));
        }
        private static VsSafeProjectGuidService CreateInstance(IProjectAsynchronousTasksService tasksService = null, IProjectAsyncLoadDashboard loadDashboard = null)
        {
            var project = UnconfiguredProjectFactory.Create();

            tasksService  = tasksService ?? IProjectAsynchronousTasksServiceFactory.Create();
            loadDashboard = loadDashboard ?? IProjectAsyncLoadDashboardFactory.ImplementProjectLoadedInHost(() => Task.CompletedTask);

            return(new VsSafeProjectGuidService(project, tasksService, loadDashboard));
        }