Fehler Ungültige Option '6' für / langversion; muss ISO-1, ISO-2, 3, 4, 5 oder Standard sein

88

Ich versuche, auf .NET 4.6 zu zielen und auch die neueste C # -Version zu nutzen, indem ich die C # -Sprachenversion auf 6 ändere.

Beim Kompilieren habe ich jedoch folgenden Fehler erhalten:

Fehler Ungültige Option '6' für / langversion; muss ISO-1, ISO-2, 3, 4, 5 oder Standard sein

Wenn ich die /langversion:6Einstellung in Web.Config auf 5 aktualisiere , funktioniert dies.

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

Aber wie kann ich das beheben, ohne auf eine niedrigere Sprachversion zurückzugreifen?

Ich verwende Visual Studio 2015 Community Edition und habe .NET Framework 4.6 auch manuell installiert, falls es von Visual Studio 2015 nicht standardmäßig installiert wurde.

Das Projekt ist ein Standard-ASP.NET MVC-Vorlagenprojekt, das von Visual Studio 2015 erstellt wurde.

Rosdi Kasim
quelle
1
In meinem Fall musste ich nur entfernen /langversion:6...
bohdan_trotsenko
@modosansreves Das wird auf die Standard-Sprachversion zurückgesetzt. Ich glaube, das ist C # 5. Bitte überprüfen Sie, ob Sie eine der C # 6-Sprachfunktionen verwenden können.
Rosdi Kasim
Tatsächlich. Dies beraubt die Verwendung von C # 6-Funktionen. Vielen Dank.
Bohdan_Trotsenko

Antworten:

88

Achten Sie Web.Configbeim Ändern der Framework-Version auf den "Typ" des Compilers in der Datei:

für 4.5 und C # 5 -

type="Microsoft.CSharp.CSharpCodeProvider...

für 4.6 und C # 6 -

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

Weitere Infos in diesem Forumsbeitrag

DrewB
quelle
20
Dies funktioniert! .. Obwohl ich es als Fehler in Visual Studio 2015 betrachte, dies nicht automatisch zu aktualisieren, wenn ich meine Anwendung erneut auf .NET 4.6 und C # 6
ausrichte
Ich denke, du hast Recht damit. Ich habe mich gestochen und bin über deine Frage gestolpert. Zum Glück war der nächste Link, den ich fand, die Antwort.
DrewB
1
Gibt es einen universellen CSharpCodeProvider für alle .NET-Ziele?
Denfromufa
1
Meine web.config hatte den richtigen Typ und die Sprachversion wurde auf Standard gesetzt. <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" />Nur die Lösung zu
bereinigen
28

Aktualisieren Sie die folgenden NuGet-Pakete (je nachdem, welche installiert sind), um das Problem zu beheben:

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • Microsoft.Net.Compiler
Entwickler
quelle
Dies ist eher ein Kommentar als eine Antwort
Al Lelopath
1
Das ist die echte Lösung !! Deinstallieren Sie dieses Nuget-Paket und das für mich
gelöste
Ich habe auf c # 6.0 umgestellt, aber das Paket war noch auf einer älteren Version. Das Update von 1.0 auf 1.0.4 hat bei mir funktioniert.
Mixxiphoid
6
@AlLelopath, nur weil es eine kleine Antwort ist, macht es keinen Kommentar. Dieser winzige "Kommentar" löste das Problem für mich und für andere, daher bleibt er besser als Antwort.
Shimmy Weitzhandler
14

1. Gehen Sie zu Projekt und wählen Sie Ihre Projekteigenschaften aus.

2 Wählen Sie Erstellen und klicken Sie auf die Schaltfläche Erweitert.

3.Wählen Sie die Standardversion der Sprachversion.

4. Speichern.

https://youtu.be/IP8feQeWqkk

Prashant Vishwakarma
quelle
Hatte diesen Fehler in VS2013. Diese Lösung hat bei mir leider nicht funktioniert.
Jviaches
2
Dieser hat für mich gearbeitet. Bei allen anderen Lösungsvorschlägen ging es darum, die Datei web.config zu ändern oder alternativ NuGet-Pakete / -Updates herunterzuladen. Der Compiler warf immer wieder Fehler über eine ungültige Version aus, was mich verwirrte, da ich diese Einstellung nicht in der Konfigurationsdatei hatte. Es stellte sich heraus, dass die erweiterten Build-Eigenschaften durch das NuGet-Paket-Update nicht automatisch aktualisiert wurden.
Kiran Ramaswamy
3

Ich habe ein solches Verhalten festgestellt, wenn das Projekt nicht vollständig auf VS2015 aktualisiert wurde. Falls Sie die Lösung ab 2015 in VS2013 öffnen, wird dieser Fehler angezeigt

Sergii Lischuk
quelle
Ich auch, ich denke, dieser Fehler bedeutet im Grunde, dass Sie VS2015 installieren müssen! Jemand anderes im Projekt verwendet neuere
Sprachfunktionen
2

Öffnen Sie die NuGet Package Manager-Konsole und führen Sie den folgenden Befehl aus

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

Mahfuj Ur Rahman
quelle
0

Siehe eine Antwort auf den seltsamen Kompilierungsfehler von ASP.NET! .

Wenn Sie Ihre C # -Sprache auf 5 herabstufen, wird das Problem nur maskiert. Sobald jemand eine C # 6-Funktion verwendet, wird Ihre Website / Ihr Projekt beschädigt und Sie werden immer noch Zeit damit verbringen, das Problem erneut zu beheben. Probieren Sie die Lösung im Link aus.

PBo
quelle
0

Ich hatte ein ähnliches Problem, als ich die Anwendung zum ersten Mal in Visual Studio 2019 lud. Das Aktualisieren des Nugets "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" auf eine spätere Version hat den Trick für mich getan.

Govind
quelle