我是第一次尝试 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(见下图)。

c# - 尽管能够导航到定义,但 namespace   &#39;MSBuild&#39; 中不存在类型或 namespace   &#39;Microsoft.CodeAnalysis&#39;-LMLPHP

但是尽管如此,我还是不断收到错误消息 “类型或命名空间 MSBuild 不存在于命名空间 'Microsoft.CodeAnalysis' 中,在我用注释突出显示的 using 语句中” 。我似乎无法理解这个错误背后的原因。我错过了什么吗?

最佳答案

感谢@CZabransky 提供的链接,我找到了答案。

https://stackoverflow.com/a/23621818/2377928

基本上我忽略了我收到的以下警告。 (不应该忽视警告的另一个原因!o_O)

c# - 尽管能够导航到定义,但 namespace   &#39;MSBuild&#39; 中不存在类型或 namespace   &#39;Microsoft.CodeAnalysis&#39;-LMLPHP

我的项目面向 Framework 4.5 版,因此该程序集未构建,因为它是针对 v4.5.2 版本构建的。我必须将框架版本定位到 4.6 并且成功构建了解决方案。

希望这可以帮助!

10-08 20:23