这是我曾经工作过的代码:
MSBuildWorkspace msBuild = MSBuildWorkspace.Create();
Solution sln = await msBuild.OpenSolutionAsync(solutionPath);
但现在我得到:
int pr = sln.Projects.Count();//is 1 instead of 2.
和:
int docs = sln.Projects.First().Documents.Count();//is 0
他们又改了吗?
(如果重要,我需要解决方案
以便遍历字段等并使用 Renamer.RenameSymbolAsync 。)
最佳答案
我的做法是这样的:
if (!MSBuildLocator.IsRegistered) MSBuildLocator.RegisterDefaults();
using (var w = MSBuildWorkspace.Create())
{
var sln = await w.OpenSolutionAsync(solutionPath);
}
我相信 MSBuildLocator.RegisterDefaults()
是这里缺少的部分。它确保您的 VS 版本的正确 msbuild 路径。可能是你的环境路径是正确的,但是你安装了另一个 VS 实例,它不知何故变得困惑
关于c# - 如何在 Roslyn 中加载解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61048374/