我知道我可以使用裸露的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位置,这样我可以方便地编辑原始文件。
答案 0 :(得分:0)
Roslyn对MSBuild一无所知。 MSBuildWorkspace使用您的计算机上安装的MSBuild实例来计算将传递给编译器的命令行。如果您想自己检查项目文件,我会使用MSBuild API,特别是ProjectRootElement和 Project