我想使用roslyn创建一个分析器,但是首先我需要从目标解决方案中获取所有文档(.cs文件)。
我使用了Josh Varty教程中的以下代码
string solutionPath = @"C:\Users\hamza\Desktop\TestSolution\TestSolution.sln";
var msWorkspace = MSBuildWorkspace.Create();
var solution = msWorkspace.OpenSolutionAsync(solutionPath).Result;
foreach (var project in solution.Projects)
{
Console.WriteLine(project);
foreach (var document in project.Documents)
{
Console.WriteLine(project.Name + "\t\t\t" + document.Name);
}
}
但是结果是空的,我没有任何文档或项目。
MSBuildWorkspace版本是3.0.0,我也尝试过2.10.0,但结果是相同的。
有人对此有想法吗?或如何解决?
经过更多研究后,我在Github上发现了此有用的问题文章:https : //github.com/dotnet/roslyn/issues/24767
此代码工作正常
var projectPath = @"C:\Users\hamza\Desktop\TestSolution\TestSolution.sln";
using (var workspace = MSBuildWorkspace.Create())
{
var solution = workspace.OpenSolutionAsync(projectPath).Result;
foreach (var project in solution.Projects)
{
foreach (var document in project.Documents)
{
Console.WriteLine(project.Name + "\t\t\t" + document.Name);
}
}
}
最后,为了使一切正常,我添加了以下软件包:
安装包Buildalyzer.Workspaces-版本2.2.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句