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 };
                }
            }));
        }
Ejemplo n.º 2
0
        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);
        }