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


90

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

但是,在编译过程中出现此错误:

错误/ langversion的选项'6'无效;必须为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">

但是,如何解决此问题而不求助于较低语言版本?

我正在使用Visual Studio 2015社区版,并且还手动安装了.NET Framework 4.6,以防Visual Studio 2015默认情况下未安装它。

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


1
就我而言,我只需要删除/langversion:6...
bohdan_trotsenko 2015年

@modosansreves它将恢复为默认语言版本..我相信这是C#5。请检查您是否可以使用任何C#6语言功能。
Rosdi Kasim 2015年

确实。这剥夺了使用C#6功能的权利。谢谢。
bohdan_trotsenko

Answers:


89

Web.Config更改Framework版本时,请注意文件中的编译器“类型” :

适用于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"

此论坛帖子中的更多信息


20
!这个作品。虽然我认为这是不自动更新这个时候我在Visual Studio 2015年中的错误我的应用程序重新定位到.NET 4.6和C#6
Rosdi卡西姆

我认为您是对的。我被它ung住了,偶然发现了你的问题。幸运的是,我找到的下一个链接就是答案。
DrewB

1
是否为所有.NET目标提供通用的CSharpCodeProvider?
denfromufa

1
我的web.config已经正确类型和语言版本设置为默认<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" />只需清洗溶液和VS 2019年重新编译固定对我来说
joym8

31

更新以下NuGet软件包(无论已安装)以解决该问题:

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • Microsoft.Net。编译器

这更多是评论,而不是答案
Al Lelopath '17

2
这是真正的解决方案!!卸载此nuget软件包,并为我解决了问题
Geomorillo

我切换到了c#6.0,但是该程序包仍在旧版本上。从1.0升级到1.0.4对我有用。
Mixxiphoid

7
@AlLelopath只是因为它的答案很小,所以没有对此发表评论。这个微小的“评论”为我和其他人解决了这个问题,因此最好保留为答案。
Shimmy Weitzhandler,

14

1.转到项目,然后选择您的项目属性。

2选择生成,然后单击高级按钮。

3.选择默认语言版本。

4.保存。

https://youtu.be/IP8feQeWqkk


在VS2013中发生此错误。不幸的是,该解决方案对我不起作用。
Jviaches

2
这个为我工作。所有其他建议的解决方案都围绕更改web.config文件,或者下载NuGet软件包/更新。编译器不断抛出有关无效版本的错误,这使我感到困惑,因为在配置文件中没有该设置。事实证明,NuGet软件包更新并未自动更新高级构建属性。
Kiran Ramaswamy's

3

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


我也是,我认为此错误基本上意味着您需要安装VS2015!项目中的其他人正在使用2013年无法应付的较新语言功能
JonnyRaa

2

打开NuGet软件包管理器控制台,然后运行以下命令

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


0

看到ASP.NET奇怪的编译错误的答案

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


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.