【问题标题】:GetPathsOfAllDirectoriesAbove() cannot be evaluated after updating .Net Framework version (4.6.2 to 4.7.2)更新 .Net Framework 版本(4.6.2 到 4.7.2)后无法评估 GetPathsOfAllDirectoriesAbove()
【发布时间】:2020-04-04 04:03:07
【问题描述】:

我一直在从事的一个项目已从 .NET Framework 4.6.2 升级到 4.7.2。 在构建时,在不是我的代码的文件中,我收到以下错误:

我在项目属性的构建选项卡中也看到了同样的错误。

我不知所措-我已经搜索了错误,但结果是空的。有没有人遇到过和/或解决过这个问题?

【问题讨论】:

    标签: c# .net visual-studio msbuild


    【解决方案1】:

    升级后您的构建工具似乎从 MSBUILD 更改为 Roslyn。 Microsoft.Managed.Core.targets 是 Roslyn 目标文件。

    如果您安装了以下 Nuget 包:

    • Microsoft.CodeDom.Providers.DotNetCompilerPlatform

    • Microsoft.Net.Compilers

    那么可能是导致问题的原因。将Microsoft.CodeDom.Providers.DotNetCompilerPlatform 升级到 2.x 并删除第二个。那应该可以解决问题。

    【讨论】:

    • 这很微妙,但你所说的帮助我弄清楚了 - 由于我在外出时完成了对 4.7.2 的更新,所以我实际上只有 4.6.2 - 我让 Visual Studio 来做下载 SDK,但在此过程中,它必须在我们使用 MSBuild 时将项目构建器转换为 Roslyn(如您所说)。还原所有内容并使用已安装的 4.7.2 SDK 加载它使问题消失...
    • 谢谢!!在我的情况下,我有 Microsoft.Net.Compilers 2.0,似乎 tha 版本没有冲突,但是在安装包升级 Microsoft.Net.Compilers 3.4 之后,这个噩梦开始了。我刚刚卸载了 Microsoft.Net.Compilers,现在项目编译好了 :)
    • 我不小心投了反对票。需要等待一个小时才能更正。这个问题也与 VS 2017 v2019 有关。
    • 删除 Microsoft.Net.Compilers 修复了它! +1
    • 此错误(在我上面的评论中)是由于尝试使用 VS2017(在 Azure DevOps 中)构建 VS2019 项目引起的。使用正确版本的 Visual Studio 并结合您的答案,解决了它。
    【解决方案2】:

    遇到同样的错误 - Microsoft.Net.Compilers 2.x (vs2017) 和 3.x (vs2019) 之间的兼容性问题 - 从 v3 降级到 v2 专门解决了我们只有 VS2017 的构建代理的问题。 v3 requires VS 2019 or later per roslyn-analyzers release spec.

    根据相关错误Method 'System.String.GetPathsOfAllDirectoriesAbove' not found - VS2017 甚至不会打开 CSPROJ,这是关于兼容性的线索。

    VS 2017 - CSPROJ 选项为Microsoft.Net.Compilers v3 安装缺少的功能

    VS 2017 - 安装缺少的功能

    【讨论】:

      【解决方案3】:

      当我在旧项目中更新 Microsoft.Net.Compilers 时,这发生在我身上。 完全删除 Microsoft.Net.Compilers,然后更新 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 解决了我的问题。

      【讨论】:

        【解决方案4】:

        在尝试使用旧版 Visual Studio 编译 VS2019 项目时也会发生这种情况(例如,在构建服务器上或在 Azure DevOps 中)。

        如果在应用答案https://stackoverflow.com/a/59276492/2279059 的解决方案后,错误变为

        ##[error]CSC(0,0): Error CS1617: Invalid option '8.0' for /langversion
        

        那么很可能就是这种情况。然后,解决方案是使用正确版本的 Visual Studio (2019) 进行构建。

        【讨论】:

          【解决方案5】:

          当您通过 nuget 升级以下库时,通常会出现此错误

          Microsoft.CodeDom.Providers.DotNetCompilerPlatform

          Microsoft.Net.Compilers

          伙计们,如果您的项目由于此错误而无法加载。只需通过资源管理器转到该项目位置并手动删除 obj 文件夹。

          然后右键单击项目并重新加载。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-03-19
            • 1970-01-01
            • 2021-10-03
            • 1970-01-01
            • 2021-03-27
            • 2017-09-11
            • 2020-06-22
            相关资源
            最近更新 更多