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

Ros*_*sim 83 .net c# asp.net-mvc-5.2 .net-4.6

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

但是在编译期间我遇到了这个错误:

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

如果我将/langversion:6Web.Config设置更新为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">
Run Code Online (Sandbox Code Playgroud)

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

我正在使用Visual Studio 2015社区版,我还手动安装了.NET Framework 4.6,以防Visual Studio 2015默认安装它.

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

Dre*_*ewB 87

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

4.5和C#5 -

type="Microsoft.CSharp.CSharpCodeProvider...
Run Code Online (Sandbox Code Playgroud)

4.6和C#6 -

type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Run Code Online (Sandbox Code Playgroud)

此论坛帖子中的更多信息

  • 这有效!尽管我认为它是Visual Studio 2015中的一个错误,因为当我将我的应用程序重新定位到.NET 4.6和C#6时,它不会自动更新. (19认同)
  • 我的 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认同)

Dev*_*per 25

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

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

  • @AlLelopath只是因为它是一个小答案并没有使它成为评论.这个微小的"评论"为我和其他人解决了这个问题,所以最好留下来作为答案. (5认同)
  • 这才是真正的解决方案!!卸载这个 nuget 包并为我解决了问题 (2认同)

Pra*_*rma 10

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

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

3.选择语言版本默认.

4.Save.

https://youtu.be/IP8feQeWqkk

  • 这个对我有用.所有其他建议的解决方案都围绕更改web.config文件,或者下载NuGet包/更新.编译器不断抛出有关无效版本的错误,这使我感到困惑,因为我在配置文件中没有设置.原来,NuGet包更新不会自动更新高级构建属性. (2认同)