public IEnumerable <ProjectChanges> GetProjectChanges() { var old = _oldSolution; // if the project states are different then there is a change. foreach (var id in _newSolution.ProjectIds) { var newState = _newSolution.GetProjectState(id); var oldState = old.GetProjectState(id); if (oldState != null && newState != null && newState != oldState) { yield return(_newSolution.GetProject(id).GetChanges(_oldSolution.GetProject(id))); } } }
private void ValidateSolutionAndCompilations(Solution solution) { foreach (var project in solution.Projects) { Assert.True(solution.ContainsProject(project.Id), "Solution was expected to have project " + project.Id); Assert.Equal(project, solution.GetProject(project.Id)); // these won't always be unique in real-world but should be for these tests Assert.Equal(project, solution.GetProjectsByName(project.Name).FirstOrDefault()); var compilation = project.GetCompilationAsync().Result; Assert.NotNull(compilation); // check that the options are the same Assert.Equal(project.CompilationOptions, compilation.Options); // check that all known metadata references are present in the compilation foreach (var meta in project.MetadataReferences) { Assert.True(compilation.References.Contains(meta), "Compilation references were expected to contain " + meta); } // check that all project-to-project reference metadata is present in the compilation foreach (var referenced in project.ProjectReferences) { if (solution.ContainsProject(referenced.ProjectId)) { var referencedMetadata = solution.GetMetadataReferenceAsync(referenced, solution.GetProjectState(project.Id), CancellationToken.None).Result; Assert.NotNull(referencedMetadata); var compilationReference = referencedMetadata as CompilationReference; if (compilationReference != null) { compilation.References.Single(r => { var cr = r as CompilationReference; return cr != null && cr.Compilation == compilationReference.Compilation; }); } } } // check that the syntax trees are the same var docs = project.Documents.ToList(); var trees = compilation.SyntaxTrees.ToList(); Assert.Equal(docs.Count, trees.Count); foreach (var doc in docs) { Assert.True(trees.Contains(doc.GetSyntaxTreeAsync().Result), "trees list was expected to contain the syntax tree of doc"); } } }
private static CompilationTracker CreateCompilationTracker(ProjectId projectId, Solution solution) { return new CompilationTracker(solution.GetProjectState(projectId)); }
private static Project CreateProject(ProjectId projectId, Solution solution) { return new Project(solution, solution.GetProjectState(projectId)); }