Как я могу проанализировать файл csproj с Roslyn, чтобы получить список импортированных целевых файлов? - PullRequest
0 голосов
/ 29 апреля 2019

Я знаю, что могу сделать это с голым XML, но мне любопытно, позволит ли Рослин мне это сделать.

Мой текущий код:

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 голосов
/ 30 апреля 2019

Рослин ничего не знает о MSBuild.MSBuildWorkspace использует экземпляр MSBuild, установленный на вашем компьютере, для вычисления командной строки, которая будет передана компилятору.Если вы хотите изучить файлы проекта сами, я бы посмотрел на использование API MSBuild, в частности ProjectRootElement и Project

...