更新.Net Framework版本(4.6.2至4.7.2)后,无法评估GetPathsOfAllDirectoriesAbove()

时间:2019-12-10 22:17:56

标签: c# .net visual-studio msbuild

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

enter image description here

在项目属性的“构建”选项卡中,我也看到相同的错误。

[[2]

我很茫然-我正在寻找错误,而且空无一人。以前有没有人遇到和/或解决过这个问题?

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

升级后的构建工具看起来像从MSBUILD更改为Roslyn。 Microsoft.Managed.Core.targets是Roslyn目标文件。

如果已安装以下Nuget软件包:

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform

  • Microsoft.Net.Compilers

然后可能是造成问题的原因。将Microsoft.CodeDom.Providers.DotNetCompilerPlatform升级到2.x,然后删除第二个。那应该解决问题。

答案 2 :(得分:3)

遇到相同的错误-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的缺失功能

enter image description here

VS 2017-安装缺少的功能

enter image description here

答案 3 :(得分:2)

当尝试使用旧版本的 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) 进行构建。