MSBuildWorkspace:解决方案不包含 Visual Studio 2019 上的任何文档和项目
MSBuildWorkspace : solution contains no documents and no projects on Visual Studio 2019
我想使用 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 上发现了这个有用的问题 post:
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);
}
}
}
最后为了让一切正常,我添加了这个包:
Install-Package Buildalyzer.Workspaces -版本 2.2.0
我想使用 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 上发现了这个有用的问题 post: 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);
}
}
}
最后为了让一切正常,我添加了这个包:
Install-Package Buildalyzer.Workspaces -版本 2.2.0