如何在Roslyn中加载解决方案?

问题描述 投票:1回答:1

这是我以前使用过的代码:

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。)

c# roslyn roslyn-code-analysis
1个回答
0
投票

我的操作方式如下:

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

我相信MSBuildLocator.RegisterDefaults()是这里缺少的部分。它可以确保您的VS版本使用正确的msbuild路径。可能是您的环境路径正确,但是随后您又安装了VS的另一个实例,因此感到困惑[]

© www.soinside.com 2019 - 2024. All rights reserved.