Тип или пространство имен "MSBuild" не существует в пространстве имен "Microsoft.CodeAnalysis", несмотря на возможность перехода к определению

Я пробую Roslyn впервые и пишу небольшой кусочек кода, чтобы прочитать проект, классы и участников класса.

Я использую MSBuildWorkspace класс для создания рабочего пространства Roslyn (MSBuildWorkspace.Create()). Ниже небольшая часть кода, который я написал

using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.MSBuild;    //Some problem in this line? Read on.

...
...

var workspace = MSBuildWorkspace.Create();
Solution solutionToAnalyze =
                workspace.OpenSolutionAsync(pathToSolution).Result;
IEnumerable<Project> projectsToAnalyze =
                solutionToAnalyze.Projects;
...
...

Когда я делаю "Перейти к определению" в классе MSBuildWorkspace, я могу перейти к определению класса и четко видеть, что это пространство имен - Microsoft.CodeAnalysis.MSBuild (см. Изображение ниже).

введите описание изображения здесь

Но несмотря на это, я продолжаю получать сообщение об ошибке: "Тип или пространство имен MSBuild не существует в пространстве имен" Microsoft.CodeAnalysis "в операторе using, который я выделил в комментарии". Я просто не могу понять причину этой ошибки. Я что-то пропустил?

2 ответа

Решение

Я нашел ответ благодаря ссылке, предоставленной @CZabransky.

/questions/33335490/tip-ili-prostranstvo-imen-ne-najdeno-vyi-propustili-ssyilku-na-sborku-hotya-vse-ssyilki-vernyi/33335517#33335517

В основном я пропускал ниже предупреждение, которое я получал. (Еще одна причина, по которой не следует игнорировать предупреждения! O_O)

введите описание изображения здесь

Мой проект был ориентирован на Framework версии 4.5, и поэтому эта сборка не была собрана, поскольку она была собрана с версией v4.5.2. Мне пришлось нацелить версию фреймворка на 4.6, и решение было успешно построено

Надеюсь это поможет!

Вам нужно добавить ссылку на Microsoft.CodeAnalysis.Workspaces.MSBuild.dll

Другие вопросы по тегам