/langversion 的错误选项“6”无效;必须是 ISO-1、ISO-2、3、4、5 或默认值

Error Invalid option '6' for /langversion; must be ISO-1, ISO-2, 3, 4, 5 or Default

我正在尝试以 .NET 4.6 为目标,并通过将 C# 语言版本更改为 6 来利用最新的 C# 版本。

然而在编译过程中我得到了这个错误:

Error Invalid option '6' for /langversion; must be ISO-1, ISO-2, 3, 4, 5 or Default

如果我将 Web.Config 设置中的 /langversion:6 更新为 5 就可以了,

  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">

但是我该如何在不使用较低语言版本的情况下解决这个问题呢?

我正在使用 Visual Studio 2015 Community Edition,我还手动安装了 .NET Framework 4.6,以防它在 Visual Studio 2015 之前没有默认安装。

该项目是 Visual Studio 2015 年创建的标准 ASP.NET MVC 模板项目。

注意 Web.Config 文件中的编译器 "type",更改框架版本时:

对于 4.5 和 C#5 -

type="Microsoft.CSharp.CSharpCodeProvider...

对于 4.6 和 C#6 -

type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

More info in this forum post

查看 ASP.NET strange compilation error! 的答案。

将您的 C# 语言降级到 5 只会掩盖问题,一旦有人使用 C# 6 功能,您的 website/project 就会崩溃,您仍然会花时间再次修复它。尝试 link.

中的解决方案

如果项目没有完全升级到 VS2015,我会遇到这样的行为。如果您在 VS2013 中打开 2015 年的解决方案 - 您将收到此错误

1.Go 到项目和 select 您的项目属性。

2 Select 构建并单击“高级”按钮。

3.Select 语言版本默认。

4.Save .

https://youtu.be/IP8feQeWqkk

更新以下 NuGet 包(以安装的为准)以解决问题:

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • Microsoft.Net.Compilers

我在 visual studio 2019 年第一次加载应用程序时遇到了类似的问题。将 "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" nuget 更新到更高版本对我有用。

打开 NuGet 包管理器控制台并运行执行以下命令

更新包Microsoft.CodeDom.Providers.DotNetCompilerPlatform-r