Errore opzione "6" non valida per / langversion; deve essere ISO-1, ISO-2, 3, 4, 5 o predefinito


90

Sto cercando di indirizzare .NET 4.6 e anche di sfruttare l'ultima versione C # cambiando la versione del linguaggio C # a 6.

Tuttavia durante la compilazione ho ricevuto questo errore:

Errore opzione "6" non valida per / langversion; deve essere ISO-1, ISO-2, 3, 4, 5 o predefinito

Se /langversion:6aggiorno l'impostazione in Web.Config a 5 funziona,

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

Ma come risolvo questo problema senza ricorrere a una versione in una lingua inferiore?

Sto usando Visual Studio 2015 Community Edition e ho anche installato .NET Framework 4.6 manualmente nel caso in cui non fosse installato di default da Visual Studio 2015.

Il progetto è un progetto modello MVC ASP.NET standard creato da Visual Studio 2015.


1
Nel mio caso ho solo dovuto rimuovere /langversion:6...
bohdan_trotsenko

@modosansreves Verrà ripristinata la versione in lingua predefinita .. che è C # 5 credo ... per favore controlla se puoi usare una delle funzionalità del linguaggio C # 6.
Rosdi Kasim

Infatti. Ciò priva di usare le funzionalità C # 6. Grazie.
bohdan_trotsenko

Risposte:


89

Prestare attenzione al "tipo" del compilatore nel Web.Configfile, quando si cambia la versione del Framework:

per 4.5 e C # 5 -

type="Microsoft.CSharp.CSharpCodeProvider...

per 4.6 e C # 6 -

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

Maggiori informazioni in questo post del forum


20
Funziona! .. Anche se lo considero un bug in Visual Studio 2015 per non aggiornarlo automaticamente quando reindirizzo la mia applicazione a .NET 4.6 e C # 6.
Rosdi Kasim

Penso che tu abbia ragione in questo. Sono stato punto e sono incappato nella tua domanda. Fortunatamente il collegamento successivo che ho trovato è stata la risposta.
DrewB

1
Esiste CSharpCodeProvider universale per tutte le destinazioni .NET?
denfromufa

1
Il mio web.config aveva il tipo corretto e la versione della lingua era impostata come predefinita <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" />Solo la pulizia della soluzione e la ricompilazione l'hanno risolta per me in VS 2019.
joym8

31

Aggiorna i seguenti pacchetti NuGet (a seconda di quale è installato) per risolvere il problema:

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

questo è più un commento che una risposta
Al Lelopath

2
Questa è la vera soluzione !! Disinstalla questo pacchetto nuget e il problema risolto per me
Geomorillo

Sono passato a c # 6.0, ma il pacchetto era ancora su una versione precedente. L'aggiornamento da 1.0 a 1.0.4 ha funzionato per me.
Mixxiphoid

7
@ AlLelopath solo perché è una piccola risposta non ne fa un commento. Questo piccolo "commento" ha risolto il problema per me e per gli altri, quindi è meglio che rimanga una risposta.
Shimmy Weitzhandler

14

1.Andare a Project e selezionare le proprietà del progetto.

2 Selezionare Build e fare clic sul pulsante Advanced.

3.Seleziona Versione lingua predefinita.

4.Salva.

https://youtu.be/IP8feQeWqkk


Aveva questo errore in VS2013. Questa soluzione non ha funzionato per me purtroppo.
Jviaches

2
Questo ha funzionato per me. Tutte le altre soluzioni suggerite ruotavano attorno alla modifica del file web.config o, in alternativa, al download di pacchetti / aggiornamenti NuGet. Il compilatore continuava a lanciare errori su una versione non valida, il che mi ha confuso poiché non avevo quell'impostazione nel file di configurazione. Risulta che le proprietà di compilazione avanzate non sono state aggiornate automaticamente dall'aggiornamento del pacchetto NuGet.
Kiran Ramaswamy

3

Ho riscontrato tale comportamento se il progetto non è stato completamente aggiornato a VS2015. Nel caso in cui apri la soluzione dal 2015 in VS2013, otterrai questo errore


Anch'io, penso che questo errore significhi fondamentalmente che devi installare VS2015! Qualcun altro nel progetto sta utilizzando nuove funzionalità linguistiche che il 2013 non è in grado di
gestire

2

Apri la console di Gestione pacchetti NuGet ed esegui questo comando seguente

Pacchetto di aggiornamento Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r


0

Vedi una risposta a ASP.NET strano errore di compilazione! .

Il downgrade del linguaggio C # a 5 maschera solo il problema, non appena qualcuno utilizza una funzionalità C # 6 il tuo sito web / progetto si interromperà e passerai ancora del tempo a risolverlo. Prova la soluzione nel link.


0

Ho riscontrato un problema simile durante il caricamento dell'applicazione per la prima volta in Visual Studio 2019. L'aggiornamento del nuget "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" alla versione successiva ha funzionato per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.