Как загрузить решение в Рослин? - PullRequest
3 голосов
/ 05 апреля 2020

Вот мой код, который раньше работал:

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, чтобы перебрать поля et c. и использовать Renamer.RenameSymbolAsyn c.)

1 Ответ

4 голосов
/ 17 апреля 2020

То, как я это сделал, выглядело так:

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

Я считаю, что MSBuildLocator.RegisterDefaults() - это недостающий фрагмент. это гарантирует правильный путь msbuild для вашей версии VS. Возможно, ваш путь к среде был правильным, но затем вы установили другой экземпляр VS, и он как-то запутался

...