public static void OpenTutorialSolution(SolutionStateTracker solutionStateTracker, int id) { var globalSettings = GlobalSettings.Instance; VsIntegration.CloseVsSolution(); solutionStateTracker.NotifyAgreeToRunTutorial(); SolutionCopyHelper.CleanUpDirectory(globalSettings.GetPath(id, PathType.WorkCopySolutionFolder)); SolutionCopyHelper.CopySolution(globalSettings.GetPath(id, PathType.BaseSolutionFolder), globalSettings.GetPath(id, PathType.WorkCopySolutionFolder)); VsIntegration.OpenVsSolution(globalSettings.GetPath(id, PathType.WorkCopySolutionFile)); }
public SolutionStateNotifier([NotNull] Lifetime lifetime, [NotNull] ISolution solution, [NotNull] IShellLocks shellLocks, [NotNull] ISolutionLoadTasksScheduler scheduler, [NotNull] SolutionStateTracker solutionStateTracker, [NotNull] IPsiServices psiServices) { if (lifetime == null) { throw new ArgumentNullException("lifetime"); } if (solution == null) { throw new ArgumentNullException("solution"); } if (shellLocks == null) { throw new ArgumentNullException("shellLocks"); } if (scheduler == null) { throw new ArgumentNullException("scheduler"); } if (solutionStateTracker == null) { throw new ArgumentNullException("solutionStateTracker"); } scheduler.EnqueueTask(new SolutionLoadTask("SolutionStateTracker", SolutionLoadTaskKinds.SolutionContainer, () => solutionStateTracker.HandleSolutionContainerCreated(solution))); scheduler.EnqueueTask(new SolutionLoadTask("SolutionStateTracker", SolutionLoadTaskKinds.Done, () => solutionStateTracker.HandleSolutionOpened(solution))); scheduler.EnqueueTask(new SolutionLoadTask("SolutionStateTracker", SolutionLoadTaskKinds.AfterDone, () => psiServices.CachesState.IsIdle.WhenTrueOnce(lifetime, () => solutionStateTracker.HandlePsiLoaded(solution)))); lifetime.AddAction(solutionStateTracker.HandleSolutionClosed); }