【问题标题】:Error Invalid option '6' for /langversion; must be ISO-1, ISO-2, 3, 4, 5 or Default/langversion 的错误选项“6”无效;必须是 ISO-1、ISO-2、3、4、5 或默认值
【发布时间】:2015-08-07 02:32:55
【问题描述】:

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

但是在编译过程中我得到了这个错误:

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

如果我将 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 社区版,并且我还手动安装了 .NET Framework 4.6,以防万一 Visual Studio 2015 默认未安装它。

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

【问题讨论】:

  • 就我而言,我只需要删除/langversion:6...
  • @modosansreves 这将恢复到默认语言版本.. 我相信这是 C# 5... 请检查您是否可以使用任何 C# 6 语言功能。
  • 确实如此。这剥夺了使用 C# 6 的功能。谢谢。

标签: c# .net asp.net-mvc-5.2 .net-4.6


【解决方案1】:

在更改框架版本时注意Web.Config文件中的编译器“类型”:

对于 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

【讨论】:

  • 这行得通!.. 虽然我认为这是 Visual Studio 2015 中的一个错误,因为当我将我的应用程序重新定位到 .NET 4.6 和 C# 6 时不会自动更新它。
  • 我认为你是对的。我被它刺痛了,偶然发现了你的问题。幸运的是,我找到的下一个链接就是答案。
  • 是否有适用于所有 .NET 目标的通用 CSharpCodeProvider?
  • 我的 web.config 有正确的类型和语言版本设置为默认 &lt;compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" /&gt; 只是清理解决方案并重新编译在 VS 2019 中为我修复了它。
【解决方案2】:

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

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

【讨论】:

  • 这更像是一个评论而不是一个答案
  • 这才是真正的解决方案!!卸载这个 nuget 包并为我解决了问题
  • 我切换到 c# 6.0,但该软件包仍在旧版本上。从 1.0 更新到 1.0.4 对我有用。
  • @AllLelopath 仅仅因为它是一个小答案并不能成为评论。这个小小的“评论”为我和其他人解决了这个问题,所以最好保留作为答案。
  • 对于那些需要:“update-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform”然后“update-package Microsoft.Net.Compilers”
【解决方案3】:

1.转到项目并选择您的项目属性。

2 选择构建并单击高级按钮。

3.选择语言版本默认。

4.保存。

https://youtu.be/IP8feQeWqkk

【讨论】:

  • 在 VS2013 中出现此错误。不幸的是,这个解决方案对我不起作用。
  • 这个对我有用。所有其他建议的解决方案都围绕更改 web.config 文件,或者下载 NuGet 包/更新。编译器不断抛出有关无效版本的错误,这让我感到困惑,因为我在配置文件中没有该设置。结果发现 NuGet 包更新并未自动更新高级构建属性。
【解决方案4】:

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

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

【讨论】:

  • 这很好,但为什么呢?
【解决方案5】:

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

【讨论】:

  • 我也是,我认为这个错误基本上意味着你需要安装VS2015!项目中的其他人正在使用 2013 年无法应对的新语言功能
【解决方案6】:

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

【讨论】:

    【解决方案7】:

    查看ASP.NET strange compilation error!的回复。

    将您的 C# 语言降级到 5 只会掩盖问题,一旦有人使用 C# 6 功能,您的网站/项目就会中断,而您仍然会花时间再次修复它。尝试链接中的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-01
      • 2022-06-26
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多