Тип или пространство имен "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.
В основном я пропускал ниже предупреждение, которое я получал. (Еще одна причина, по которой не следует игнорировать предупреждения! O_O)
Мой проект был ориентирован на Framework версии 4.5, и поэтому эта сборка не была собрана, поскольку она была собрана с версией v4.5.2. Мне пришлось нацелить версию фреймворка на 4.6, и решение было успешно построено
Надеюсь это поможет!
Вам нужно добавить ссылку на Microsoft.CodeAnalysis.Workspaces.MSBuild.dll