我正在使用Roslyn来查看引用了许多系统程序集的项目,如下所示:
var workspace = MSBuildWorkspace.Create();
_solution = workspace.OpenSolutionAsync(_solutionPath).Result;
var project = _solution.Projects.Single(p => p.Name == "TestProject");
当我查看project.MetadataReferences它有9个元素和project.ProjectReferences没有元素 - 所有这些都是我所期望的。 Documents属性包含的文档比我预期的还多一个生成的文档。
如果我将此项目的引用添加到另一个项目,那么project.ProjectReferences有一个元素,正如我所期望的那样,但是project.MetadataReferences由于缺少系统类型而没有引用和数百个诊断错误。生成的文档不存在。
唯一的变化是添加项目参考。为什么所有元数据引用都会消失?