2015-08-07 16 views
66

Sto cercando di raggiungere .NET 4.6 e inoltre sfruttare l'ultima versione di C# modificando la versione in linguaggio C# a 6.Errore opzione non valida '6' per/langversion; deve essere ISO-1, ISO-2, 3, 4, 5 o Default

Tuttavia durante la compilazione ho ottenuto questo errore:

Error Invalid option '6' for /langversion; must be ISO-1, ISO-2, 3, 4, 5 or Default

Se aggiorno il /langversion:6 nella creazione di 5 funziona web.Config,

<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 posso risolvere questo senza ricorrere alla versione in lingua inferiore?

Sto usando Visual Studio 2015 Community Edition, e ho anche installato manualmente nel caso in cui non è stato installato di default da Visual Studio 2015.

Il progetto .NET Framework 4.6 è un ASP.NET MVC normale progetto modello creato da Visual Studio 2015.

+1

Nel mio caso ho solo dovuto rimuovere '/ langversion: 6' ... –

+0

@modosansreves che tornerà alla versione lingua predefinita .. che è C# 5 credo ... per favore controlla se è possibile utilizzare uno qualsiasi di C# 6 lingue. –

+0

Infatti. Ciò priva dell'utilizzo delle funzionalità C# 6. Grazie. –

risposta

73

Pay attantion a compilatore "tipo" nel file Web.Config, quando si cambia Framework versione:

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"

More info here...

+17

Questo funziona! .. Anche se lo considero un bug in Visual Studio 2015 per non aggiornarlo automaticamente quando re-targetizzo la mia applicazione su .NET 4.6 e C# 6. –

+0

Penso che tu abbia ragione in questo. Mi sono punto e sono incappato nella tua domanda. Fortunatamente il prossimo link che ho trovato è stata la risposta. – DrewB

+2

Aggiungilo ai numerosi bug che ho incontrato con VS2015. –

0

visualizzare una risposta alla ASP.NET strange compilation error!.

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

3

Ho incontrato un comportamento del genere se il progetto non è stato completamente aggiornato a VS2015. Nel caso in cui apri la soluzione dal 2015 in VS2013, visualizzerai questo errore

+0

Anch'io, penso che questo errore significhi fondamentalmente che devi installare VS2015! Qualcun altro del progetto utilizza le nuove funzionalità linguistiche che il 2013 non è in grado di affrontare con –

3

1. Vai su Progetto e seleziona le proprietà del progetto.

2 Selezionare Crea e fare clic sul pulsante Avanzate.

3.Seleziona lingua Versione predefinita.

4. Salva.

https://youtu.be/IP8feQeWqkk

+0

Questo errore si è verificato in VS2013. Questa soluzione non ha funzionato per me, purtroppo. – Jviaches

+1

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 generare errori su una versione non valida, che mi confondeva poiché non avevo avuto quell'impostazione nel file di configurazione. Risulta che le proprietà di build avanzate non sono state automaticamente aggiornate dall'aggiornamento del pacchetto NuGet. –

12

aggiornamento NuGet il

Microsoft.CodeDom.Providers.DotNetCompilerPlatform

può risolvere questo problema.

+0

questo è più di un commento che una risposta –

+0

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

+0

Sono passato a C# 6.0, ma il pacchetto era ancora su una versione precedente. Aggiornamento da 1.0 a 1.0.4 ha funzionato per me. – Mixxiphoid