如何使用Roslyn解析csproj文件以获得导入的目标文件列表?

时间:2019-04-29 19:31:22

标签: roslyn

我知道我可以使用裸露的XML来做到这一点,但是我很好奇Roslyn也允许我这样做。

我当前的代码是:

MSBuildLocator.RegisterDefaults();

using (var workspace = MSBuildWorkspace.Create())
{
    workspace.LoadMetadataForReferencedProjects = true;
    var solution = await workspace.OpenSolutionAsync(solutionFile);
    foreach (var project in solution.Projects)
    {
        foreach (var csFile in project.Documents.Where(o => o.SupportsSyntaxTree && o.Name.EndsWith(".cs")))
        {
            // Do some per cs file processing
        }

        // I want to check the imports and if the one I need is missing - add it.
    }
}

如何提取有关进口的信息?最好使用FullSpan位置,这样我可以方便地编辑原始文件。

1 个答案:

答案 0 :(得分:0)

Roslyn对MSBuild一无所知。 MSBuildWorkspace使用您的计算机上安装的MSBuild实例来计算将传递给编译器的命令行。如果您想自己检查项目文件,我会使用MSBuild API,特别是ProjectRootElement Project