【发布时间】:2020-04-04 04:03:07
【问题描述】:
我一直在从事的一个项目已从 .NET Framework 4.6.2 升级到 4.7.2。 在构建时,在不是我的代码的文件中,我收到以下错误:
我在项目属性的构建选项卡中也看到了同样的错误。
我不知所措-我已经搜索了错误,但结果是空的。有没有人遇到过和/或解决过这个问题?
【问题讨论】:
标签: c# .net visual-studio msbuild
我一直在从事的一个项目已从 .NET Framework 4.6.2 升级到 4.7.2。 在构建时,在不是我的代码的文件中,我收到以下错误:
我在项目属性的构建选项卡中也看到了同样的错误。
我不知所措-我已经搜索了错误,但结果是空的。有没有人遇到过和/或解决过这个问题?
【问题讨论】:
标签: c# .net visual-studio msbuild
升级后您的构建工具似乎从 MSBUILD 更改为 Roslyn。 Microsoft.Managed.Core.targets 是 Roslyn 目标文件。
如果您安装了以下 Nuget 包:
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Microsoft.Net.Compilers
那么可能是导致问题的原因。将Microsoft.CodeDom.Providers.DotNetCompilerPlatform 升级到 2.x 并删除第二个。那应该可以解决问题。
【讨论】:
遇到同样的错误 - 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,这是关于兼容性的线索。
Microsoft.Net.Compilers v3 安装缺少的功能【讨论】:
当我在旧项目中更新 Microsoft.Net.Compilers 时,这发生在我身上。 完全删除 Microsoft.Net.Compilers,然后更新 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 解决了我的问题。
【讨论】:
在尝试使用旧版 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) 进行构建。
【讨论】:
当您通过 nuget 升级以下库时,通常会出现此错误
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Microsoft.Net.Compilers
伙计们,如果您的项目由于此错误而无法加载。只需通过资源管理器转到该项目位置并手动删除 obj 文件夹。
然后右键单击项目并重新加载。
【讨论】: