public async Task<SerializableNavigateToSearchResult[]> SearchProjectAsync( SerializableProjectId projectId, string searchPattern, byte[] solutionChecksum) { var solution = await RoslynServices.SolutionService.GetSolutionAsync( new Checksum(solutionChecksum), CancellationToken).ConfigureAwait(false); var project = solution.GetProject(projectId.Rehydrate()); var result = await DefaultNavigateToEngineService.SearchProjectInCurrentProcessAsync( project, searchPattern, CancellationToken).ConfigureAwait(false); return Convert(result); }
private async Task <ImmutableArray <INavigateToSearchResult> > SearchProjectInRemoteProcessAsync( RemoteHostClient client, Project project, string searchPattern, CancellationToken cancellationToken) { var solution = project.Solution; using (var session = await client.CreateCodeAnalysisServiceSessionAsync( solution, cancellationToken).ConfigureAwait(false)) { var serializableResults = await session.InvokeAsync <SerializableNavigateToSearchResult[]>( nameof(IRemoteNavigateToSearchService.SearchProjectAsync), SerializableProjectId.Dehydrate(project.Id), searchPattern).ConfigureAwait(false); return(serializableResults.Select(r => r.Rehydrate(solution)).ToImmutableArray()); } }