如何在Roslyn加载解决方案



这是我以前工作的代码:

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

他们又改了吗?

(如果重要的话,我需要Solution来迭代字段等,并使用Renamer.RenameSymbolAsync。(

我做这件事的方式是这样的:

if (!MSBuildLocator.IsRegistered) MSBuildLocator.RegisterDefaults();
using (var w = MSBuildWorkspace.Create())
{
var sln = await w.OpenSolutionAsync(solutionPath);
}

我相信MSBuildLocator.RegisterDefaults()是这里缺失的部分。它可以确保VS版本的msbuild路径正确。这可能是你的环境路径是正确的,但后来你安装了另一个VS实例,它不知何故被弄糊涂了

最新更新