public async Task <IVsProjectAdapter> CreateAdapterForFullyLoadedProjectAsync(EnvDTE.Project dteProject) { Assumes.Present(dteProject); // Get services while we might be on background thread var vsSolution = await _vsSolution.GetValueAsync(); // switch to main thread and use services we know must be done on main thread. await _threadingService.JoinableTaskFactory.SwitchToMainThreadAsync(); var vsHierarchyItem = await VsHierarchyItem.FromDteProjectAsync(dteProject); Func <IVsHierarchy, EnvDTE.Project> loadDteProject = _ => dteProject; var buildStorageProperty = vsHierarchyItem.VsHierarchy as IVsBuildPropertyStorage; var vsBuildProperties = new VsProjectBuildProperties( dteProject, buildStorageProperty, _threadingService); var projectNames = await ProjectNames.FromDTEProjectAsync(dteProject, vsSolution); var fullProjectPath = dteProject.GetFullProjectPath(); return(new VsProjectAdapter( vsHierarchyItem, projectNames, fullProjectPath, dteProject.Kind, loadDteProject, vsBuildProperties, _threadingService)); }
public async Task <IVsProjectAdapter> CreateAdapterForFullyLoadedProjectAsync(EnvDTE.Project dteProject) { Assumes.Present(dteProject); await _threadingService.JoinableTaskFactory.SwitchToMainThreadAsync(); var vsHierarchyItem = VsHierarchyItem.FromDteProject(dteProject); Func <IVsHierarchy, EnvDTE.Project> loadDteProject = _ => dteProject; var buildStorageProperty = vsHierarchyItem.VsHierarchy as IVsBuildPropertyStorage; var vsBuildProperties = new VsProjectBuildProperties( dteProject, buildStorageProperty, _threadingService); var projectNames = await ProjectNames.FromDTEProjectAsync(dteProject); var fullProjectPath = EnvDTEProjectInfoUtility.GetFullProjectPath(dteProject); return(new VsProjectAdapter( vsHierarchyItem, projectNames, fullProjectPath, dteProject.Kind, loadDteProject, vsBuildProperties, _threadingService)); }
public async Task <IVsProjectAdapter> CreateAdapterForFullyLoadedProjectAsync(IVsHierarchy hierarchy) { Assumes.Present(hierarchy); // Get services while we might be on background thread var vsSolution = await _vsSolution.GetValueAsync(); // switch to main thread and use services we know must be done on main thread. await _threadingService.JoinableTaskFactory.SwitchToMainThreadAsync(); var vsHierarchyItem = VsHierarchyItem.FromVsHierarchy(hierarchy); Func <IVsHierarchy, EnvDTE.Project> loadDteProject = hierarchy => VsHierarchyUtility.GetProjectFromHierarchy(hierarchy); var buildStorageProperty = vsHierarchyItem.VsHierarchy as IVsBuildPropertyStorage; var vsBuildProperties = new VsProjectBuildProperties( new Lazy <EnvDTE.Project>(() => loadDteProject(hierarchy)), buildStorageProperty, _threadingService); var fullProjectPath = VsHierarchyUtility.GetProjectPath(hierarchy); var projectNames = await ProjectNames.FromIVsSolution2(fullProjectPath, (IVsSolution2)vsSolution, hierarchy, CancellationToken.None); return(new VsProjectAdapter( vsHierarchyItem, projectNames, fullProjectPath, loadDteProject, vsBuildProperties, _threadingService)); }