【问题标题】:Type or namespace 'MSBuild' does not exist in namespace 'Microsoft.CodeAnalysis' despite being able to navigate to definition尽管能够导航到定义,但命名空间“Microsoft.CodeAnalysis”中不存在类型或命名空间“MSBuild”
【发布时间】:2019-09-25 08:27:01
【问题描述】:

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

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

【问题讨论】:

    标签: c# msbuild roslyn


    【解决方案1】:

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

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

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

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

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      您需要添加对来自 Nuget 包 Microsoft.CodeAnalysis.Workspaces.MSBuildMicrosoft.CodeAnalysis.Workspaces.MSBuild.dll 的引用。

      【讨论】:

      • 这来自哪个 nuget 包?
      • Microsoft.CodeAnalysis.Workspaces.MSBuild
      • 引用包&lt;PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="3.11.0" /&gt;
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多