private async Task UpdateAfterDelay(ProjectId projectId) { await Task.Delay(ProjectChangeDelay); var solution = _projectManager.Workspace.CurrentSolution; var workspaceProject = solution.GetProject(projectId); if (workspaceProject != null) { _projectManager.WorkspaceProjectChanged(workspaceProject); } }
// Internal for testing internal void Workspace_WorkspaceChanged(object sender, WorkspaceChangeEventArgs e) { Project project; switch (e.Kind) { case WorkspaceChangeKind.ProjectAdded: { project = e.NewSolution.GetProject(e.ProjectId); Debug.Assert(project != null); _projectManager.WorkspaceProjectAdded(project); break; } case WorkspaceChangeKind.ProjectChanged: case WorkspaceChangeKind.ProjectReloaded: { project = e.NewSolution.GetProject(e.ProjectId); Debug.Assert(project != null); _projectManager.WorkspaceProjectChanged(project); break; } case WorkspaceChangeKind.ProjectRemoved: { project = e.OldSolution.GetProject(e.ProjectId); Debug.Assert(project != null); _projectManager.WorkspaceProjectRemoved(project); break; } case WorkspaceChangeKind.SolutionAdded: case WorkspaceChangeKind.SolutionChanged: case WorkspaceChangeKind.SolutionCleared: case WorkspaceChangeKind.SolutionReloaded: case WorkspaceChangeKind.SolutionRemoved: if (e.OldSolution != null) { foreach (var p in e.OldSolution.Projects) { _projectManager.WorkspaceProjectRemoved(p); } } InitializeSolution(e.NewSolution); break; } }