Ejemplo n.º 1
0
        private static ProjectDesignerService CreateInstance(IUnconfiguredProjectVsServices?projectVsServices, IVsProjectDesignerPageService?vsProjectDesignerPageService)
        {
            projectVsServices ??= IUnconfiguredProjectVsServicesFactory.Create();
            vsProjectDesignerPageService ??= IVsProjectDesignerPageServiceFactory.Create();

            return(new ProjectDesignerService(projectVsServices, vsProjectDesignerPageService));
        }
        private static VsContainedLanguageComponentsFactory CreateInstance(
            IOleAsyncServiceProvider?serviceProvider              = null,
            IUnconfiguredProjectVsServices?projectVsServices      = null,
            IActiveWorkspaceProjectContextHost?projectContextHost = null)
        {
            projectVsServices ??= IUnconfiguredProjectVsServicesFactory.Create();
            projectContextHost ??= IActiveWorkspaceProjectContextHostFactory.Create();

            return(new VsContainedLanguageComponentsFactory(IVsServiceFactory.Create <SAsyncServiceProvider, IOleAsyncServiceProvider>(serviceProvider !),
                                                            projectVsServices,
                                                            projectContextHost));
        }
        public void Search(IRelationshipSearchParameters parameters, Action <ISearchResult> resultAccumulator)
        {
            Requires.NotNull(parameters, nameof(parameters));
            Requires.NotNull(resultAccumulator, nameof(resultAccumulator));

            if (_providers.Length == 0)
            {
                // No providers registered
                return;
            }

            if (!parameters.Options.SearchExternalItems)
            {
                // Consider the dependencies tree as containing 'external items', allowing the
                // tree to be excluded from search results via this option.
                return;
            }

            using var context = new DependenciesTreeSearchContext(parameters, resultAccumulator);

            _joinableTaskContext.Factory.Run(SearchSolutionAsync);

            Task SearchSolutionAsync()
            {
                // Search projects concurrently
                return(Task.WhenAll(_projectServiceAccessor.GetProjectService().LoadedUnconfiguredProjects.Select(SearchProjectAsync)));
            }

            async Task SearchProjectAsync(UnconfiguredProject unconfiguredProject)
            {
                IUnconfiguredProjectVsServices?  projectVsServices         = unconfiguredProject.Services.ExportProvider.GetExportedValue <IUnconfiguredProjectVsServices>();
                IActiveConfigurationGroupService?configurationGroupService = unconfiguredProject.Services.ExportProvider.GetExportedValue <IActiveConfigurationGroupService>();
                IProjectTree?dependenciesNode = projectVsServices?.ProjectTree.CurrentTree?.FindChildWithFlags(DependencyTreeFlags.DependenciesRootNode);

                if (projectVsServices != null &&
                    dependenciesNode != null &&
                    configurationGroupService is IActiveConfigurationGroupService2 activeConfigurationGroupService)
                {
                    IConfigurationGroup <ConfiguredProject> configuredProjects = await activeConfigurationGroupService.GetActiveLoadedConfiguredProjectGroupAsync();

                    var projectContext = new DependenciesTreeProjectSearchContext(context, unconfiguredProject, dependenciesNode, _hierarchyItemManager, projectVsServices, _relationProvider);

                    // Search providers concurrently
                    await Task.WhenAll(_providers.Select(provider => provider.SearchAsync(projectContext)));
                }
            }
        }
Ejemplo n.º 4
0
        public DesignTimeAssemblyResolution(IUnconfiguredProjectVsServices projectVsServices)
        {
            Requires.NotNull(projectVsServices, nameof(projectVsServices));

            _projectVsServices = projectVsServices;
        }