尽管能够导航到定义,但名称空间"Microsoft.CodeAnalysis"中不存在类型或名称空间"MSBuild"

Amo*_*atu 2 c# msbuild roslyn

我正在第一次尝试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;
...
...
Run Code Online (Sandbox Code Playgroud)

当我在MSBuildWorkspace类上执行"转到定义"时,我能够导航到类的定义,我可以清楚地看到它的命名空间是Microsoft.CodeAnalysis.MSBuild(见下图).

在此输入图像描述

但尽管这样,我不断收到错误消息,"类型或命名空间的MSBuild不会在using语句,我已经与评论强调了命名空间'Microsoft.CodeAnalysis’存在".我似乎无法得到这个错误背后的原因.我错过了什么吗?

Amo*_*atu 7

由于@CZabransky提供的链接,我找到了答案.

/sf/answers/1653527291/

基本上我忽略了我得到的下面的警告.(人们不应该忽视警告的另一个原因!o_O)

在此输入图像描述

我的项目针对的是Framework 4.5版,所以这个程序集没有构建,因为它是针对v4.5.2版本构建的.我不得不将框架版本定位到4.6并且解决方案已成功构建.

希望这可以帮助!


Tus*_*har 5

您需要添加一个Microsoft.CodeAnalysis.Workspaces.MSBuild.dll来自 Nuget 包的引用Microsoft.CodeAnalysis.Workspaces.MSBuild