private void ActivateStudioProject(CustomViewProject customViewProject) { _projectsController.BeginInvoke(new Action(delegate { var studioProject = _projectsController.GetProjects().FirstOrDefault(a => a.GetProjectInfo().Id.ToString() == customViewProject.Id); var selectedStudioProject = _projectsController.CurrentProject?.GetProjectInfo(); if (studioProject != null && selectedStudioProject?.Id.ToString() != customViewProject.Id) { _projectsController.ActivateProject(studioProject); _projectsController.SelectedProjects = new[] { studioProject }; } })); }
public void ActivateProject(FileBasedProject project) { if (project == null) { return; } var projectId = project.GetProjectInfo().Id.ToString(); var selectedProjectId = _projectsController.CurrentProject?.GetProjectInfo().Id.ToString(); if (projectId != selectedProjectId) { var canActivateProject = CanActivateFileBasedProject(out var fullySupported); if (!canActivateProject) { return; } if (fullySupported) { _projectsController.ActivateProject(project); //var activateProjectMethod = _projectsController.GetType().GetMethod("ActivateProject", // BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); //activateProjectMethod?.Invoke(_projectsController, new object[] { project }); } else { var internalProjectType = typeof(FileBasedProject).GetProperty("InternalProject", BindingFlags.NonPublic | BindingFlags.Instance); var projectInstance = internalProjectType?.GetValue(project); var activateProjectMethod = _projectsController.GetType().GetMethod("ActivateProject", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); activateProjectMethod?.Invoke(_projectsController, new[] { projectInstance }); } } Dispatcher.CurrentDispatcher.Invoke(delegate { }, DispatcherPriority.ContextIdle); }