Beim Ausführen einer neuen ASP.NET MVC-Anwendung (direkt aus der VS 2015-Community) auf einem Windows 2008 Server-Computer wurde dieser Fehler nicht behoben.
Viele Leute stoßen darauf, also wollte ich hier posten.
Fand eine verrückte einfache Problemumgehung dank diesem Kerl: Expertdebugger .
Aktualisieren Sie einfach Ihre Sprachversion von C # 6 auf C # 5 wie folgt:
<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″>
<providerOption name=”CompilerVersion” value=”v4.0″/>
</compiler>
<compiler language=”vb;vbs;visualbasic;vbscript” extension=”.vb” type=”Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ warningLevel=”4″ compilerOptions=”/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+”>
<providerOption name=”CompilerVersion” value=”v4.0″/>
</compiler>
</compilers>
</system.codedom>
Ändere das langversion:6
nach unten von 6 bis 5 - langversion:5
Reparierte es für mich. Danke ihm.
Wenn Sie C # 6.0 verwenden möchten:
.config
Datei, um die folgenden Änderungen durchzuführen.Suche nach system.codedom
und ändern Sie es so, dass es wie folgt aussieht:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
In meinem Fall habe ich die falsche MSBuild.exe verwendet, die gefunden in:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
Um den Fehler zu beheben, habe ich meine PATH-Umgebungsvariable aktualisiert, um Visual Studio 2017 MSBuild.exe zu verwenden:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSbuild.exe
Weitere Informationen finden Sie unter diesem Link: Fehler CS1056: Unerwartetes Zeichen '$', mit dem msbuild in einem fortlaufenden tfs-Integrationsprozess ausgeführt wird
Ich fand, dass die direkte Ursache für den Fehler in meinem Fall war:
dies ist sinnvoll, da der Fehler besagt, dass es eine ungültige Option für die Sprache gibt.
aber das hat vorher gut funktioniert - also muss es ausgewählt worden sein. was hat sich geändert? Es stellte sich heraus, dass ein Mitglied meines Teams ein Upgrade auf 2017 durchgeführt hatte, während ich 2015 noch verwendete. Nachdem er Änderungen am Projekt vorgenommen hatte, wurde die Sprachversion geändert und ich erhielt diese Änderung über die Quellcodeverwaltung. Die ausgewählte Version war jedoch für meine Version von vs nicht verfügbar, sodass sie leer war - daher der Fehler. Nach der Auswahl eines Wertes in der Dropdown-Liste Sprache (ich habe die Standardeinstellung gewählt) ist ein neuer Fehler aufgetreten. Der neue Fehler verursachte einen Buildfehler in Codezeilen, in denen die neuere Version von c # verwendet wurde. Ich habe den Code geändert, um die gleichen Funktionen auszuführen, aber mit meiner c # -Versionssyntax und dem gelösten Problem.
während die direkte Fehlerursache in der Tat eine ungültige Auswahl der Sprachversion war, war die Hauptursache auf widersprüchliche vs/c # -Versionen zurückzuführen.
In meinem Fall war der Fehler:
Fehler CS1617 Ungültige Option 'latest' für/langversion; muss ISO-1, ISO-2, Default oder eine ganze Zahl im Bereich von 1 bis 6 sein.
Ich habe meine .csproj-Datei mit dem Editor geöffnet und folgende Zeile gesehen:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
Ich habe die letzte für eine ganze Zahl im Bereich von 1 bis 6 geändert
<LangVersion>6</LangVersion>
Der Fehler ist verschwunden!
Anstatt die Sprachversion von 6 auf 5 zu ändern, ändern Sie das Attribut "type" im Compiler-Tag von
Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
zu
Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Aktualisieren Sie das Microsoft.Net.Compilers Nuget-Paket auf die neueste Version (mindestens 2.x).
Ich habe gerade das langversion
in default
geändert und es hat bei mir funktioniert. VS 2015
<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:default /nowarn:1659;1699;1701″>
<providerOption name=”CompilerVersion” value=”v4.0″/>
</compiler>
<compiler language=”vb;vbs;visualbasic;vbscript” extension=”.vb” type=”Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ warningLevel=”4″ compilerOptions=”/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+”>
<providerOption name=”CompilerVersion” value=”v4.0″/>
</compiler>
</compilers>
Die einfachste Lösung für mich war das Upgrade der .Net-Compiler über den Package Manager
Installationspaket Microsoft.Net.Compilers
und ändern Sie dann die Web.Config-Zeilen zu diesem
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
Ich habe die Microsoft.Net.Compiler auf Version 2.0 oder höher aktualisiert
in diesem Fall versuchen Sie, vs 2019 zu verwenden, ich hoffe, Hilfe zu haben