Erro Opção inválida '6' para / langversion; deve ser ISO-1, ISO-2, 3, 4, 5 ou Padrão


89

Estou tentando direcionar o .NET 4.6 e também aproveitar as vantagens da versão C # mais recente, alterando a versão da linguagem C # para 6.

No entanto, durante a compilação, recebi este erro:

Erro Opção inválida '6' para / langversion; deve ser ISO-1, ISO-2, 3, 4, 5 ou Padrão

Se eu atualizar a /langversion:6configuração do Web.Config para 5, ela funciona,

  <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">

Mas como faço para resolver isso sem recorrer a uma versão em idioma inferior?

Estou usando o Visual Studio 2015 Community Edition e também instalei o .NET Framework 4.6 manualmente, para o caso de não ter sido instalado por padrão pelo Visual Studio 2015.

O projeto é um projeto de modelo ASP.NET MVC padrão criado pelo Visual Studio 2015.


1
No meu caso, eu só tive que remover /langversion:6...
bohdan_trotsenko

@modosansreves Isso irá reverter para a versão do idioma padrão .. que é C # 5, eu acredito ... por favor, verifique se você pode usar qualquer um dos recursos de linguagem C # 6.
Rosdi Kasim

De fato. Isso impede o uso de recursos do C # 6. Obrigado.
bohdan_trotsenko

Respostas:


88

Preste atenção ao "tipo" do compilador no Web.Configarquivo, ao alterar a versão do Framework:

para 4.5 e C # 5 -

type="Microsoft.CSharp.CSharpCodeProvider...

para 4.6 e C # 6 -

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

Mais informações nesta postagem do fórum


20
Isso funciona! .. Embora eu considere isso como um bug no Visual Studio 2015 por não atualizar isso automaticamente quando redireciono meu aplicativo para .NET 4.6 e C # 6.
Rosdi Kasim

Eu acho que você está certo nisso. Eu fui picado com isso e tropecei na sua pergunta. Felizmente, o próximo link que encontrei foi a resposta.
DrewB de

1
Existe CSharpCodeProvider universal para todos os destinos .NET?
denfromufa

1
Meu web.config tinha o tipo correto e a versão do idioma estava definida como padrão. <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" />Apenas limpar a solução e recompilar corrigiu para mim no VS 2019.
joym8

30

Atualize os seguintes pacotes NuGet (qualquer que seja instalado) para resolver o problema:

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

isso é mais um comentário do que uma resposta
Al Lelopath

2
Esta é a solução real !! Desinstale este pacote nuget e o problema foi resolvido para mim
Geomorillo

Mudei para c # 6.0, mas o pacote ainda estava em uma versão mais antiga. Atualizar de 1.0 para 1.0.4 funcionou para mim.
Mixxiphoid

7
@AlLelopath só porque é uma resposta pequena, não significa que seja um comentário. Esse pequeno "comentário" resolveu o problema para mim e para os outros, então é melhor ficar como uma resposta.
Shimmy Weitzhandler

14

1. Vá para Projeto e selecione as propriedades do projeto.

2 Selecione Construir e clique no botão Avançado.

3.Selecione Versão do idioma padrão.

4.Salve.

https://youtu.be/IP8feQeWqkk


Tinha esse erro no VS2013. Esta solução não funcionou para mim, infelizmente.
Jviaches

2
Este funcionou para mim. Todas as outras soluções sugeridas giravam em torno da alteração do arquivo web.config ou, alternativamente, do download de pacotes / atualizações NuGet. O compilador continuou lançando erros sobre uma versão inválida, o que me confundiu, já que eu não tinha essa configuração no arquivo de configuração. Acontece que as propriedades avançadas de compilação não foram atualizadas automaticamente pela atualização do pacote NuGet.
Kiran Ramaswamy

3

Eu conheci esse comportamento se o projeto não foi totalmente atualizado para o VS2015. No caso, se você abrir a solução de 2015 no VS2013 - você obterá este erro


Eu também acho que esse erro basicamente significa que você precisa instalar o VS2015! Outra pessoa do projeto está usando recursos de linguagem mais recentes que 2013 não consegue enfrentar
JonnyRaa

2

Abra o console do NuGet Package Manager e execute o seguinte comando

Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r


0

Veja uma resposta para o estranho erro de compilação do ASP.NET! .

Fazer o downgrade de sua linguagem C # para 5 apenas mascara o problema, assim que alguém usar um recurso C # 6, seu site / projeto será interrompido e você ainda gastará tempo consertando-o novamente. Experimente a solução no link.


0

Tive um problema semelhante ao carregar o aplicativo pela primeira vez no Visual Studio 2019. Atualizar o nuget "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" para uma versão posterior resolveu o problema para mim.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.