public async Task <IVsProjectAdapter> CreateAdapterForFullyLoadedProjectAsync(EnvDTE.Project dteProject) { Assumes.Present(dteProject); _threadingService.ThrowIfNotOnUIThread(); var vsHierarchyItem = VsHierarchyItem.FromDteProject(dteProject); Func <IVsHierarchy, EnvDTE.Project> loadDteProject = _ => dteProject; IProjectBuildProperties vsBuildProperties; if (vsHierarchyItem.VsHierarchy is IVsBuildPropertyStorage) { vsBuildProperties = new VsManagedLanguagesProjectBuildProperties( vsHierarchyItem.VsHierarchy as IVsBuildPropertyStorage, _threadingService); } else { vsBuildProperties = new VsCoreProjectBuildProperties(dteProject, _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(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(EnvDTE.Project dteProject) { Assumes.Present(dteProject); // Get services while we might be on background thread var vsSolution5 = await _vsSolution5.GetValueAsync(); // switch to main thread and use services we know must be done on main thread. 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, vsSolution5); var fullProjectPath = EnvDTEProjectInfoUtility.GetFullProjectPath(dteProject); return(new VsProjectAdapter( vsHierarchyItem, projectNames, fullProjectPath, dteProject.Kind, loadDteProject, vsBuildProperties, _threadingService)); }