Не удалось получить эту ошибку при запуске нового приложения ASP.NET MVC (прямо из сообщества VS 2015) на компьютере под управлением Windows 2008 Server.
CS1617: Неверная опция "6 для /langversion; должны быть ISO-1, ISO-2, 3, 4, 5 или по умолчанию
Ответ 1
Многие люди сталкиваются с этим, поэтому я хотел бы опубликовать здесь.
Нашел сумасшедший легкий обходной путь благодаря этому парню: Expertdebugger.
Просто переведите свою языковую версию с С# 6 до С# 5, например:
<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>
Измените langversion:6
направлению к низу с 6 на 5 - langversion:5
Исправил это для меня. Поблагодарить его.
Ответ 2
Если вы хотите использовать С# 6.0:
- Убедитесь, что ваша версия .NET с версией выше 4.5.2.
- Затем проверьте файл
.config
, чтобы выполнить следующие изменения.
Найдите system.codedom
и измените его так, чтобы он выглядел так, как показано ниже:
<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>
Ответ 3
В моем случае я использовал не тот MSBuild.exe, который был найден в:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
Чтобы устранить эту ошибку, я обновил переменную среды PATH, чтобы начать использовать Visual Studio 2017 MSBuild.exe:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSbuild.exe
Подробности см. По этой ссылке: Ошибка CS1056: непредвиденный символ '$', запускающий msbuild в процессе непрерывной интеграции tfs
Ответ 4
Я обнаружил, что прямой причиной ошибки в моем случае было:
это имеет смысл, поскольку в сообщении об ошибке указывается, что для языка существует недопустимая опция.
но раньше это работало нормально - значит, это было выбрано. что изменилось? Оказывается, член моей команды обновился до 2017 года, пока я все еще использовал 2015 год. После того, как он внес изменения в проект, изменилась языковая версия, и я получил это изменение контроля над исходным кодом. но выбранная версия была недоступна для моей версии vs, поэтому она была пустой - отсюда и ошибка. после выбора значения в раскрывающемся списке языков (я выбрал значение по умолчанию) выскочила новая ошибка. новая ошибка вызывала сбой сборки в любых строках кода, которые использовали более новую версию С#. Я изменил код для выполнения тех же функций, но с моим синтаксисом версии С# и проблема решена.
поэтому, хотя прямой причиной ошибки действительно был неверный выбор версии языка, основной причиной было конфликт между различными версиями vs/С#.
Ответ 5
Вместо изменения версии языка с 6 по 5 измените атрибут "type" в теге компилятора с
Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
к
Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Ответ 6
В моем случае ошибка была:
Ошибка CS1617 Недопустимая опция 'latest' для /langversion; должно быть ISO-1, ISO-2, По умолчанию или целое число в диапазоне от 1 до 6.
Я открыл свой файл .csproj с помощью блокнота и увидел следующую строку:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
Я изменил последний для целого числа в диапазоне от 1 до 6
<LangVersion>6</LangVersion>
Ошибка исчезла!
Ответ 7
Обновите пакет Microsoft.Net.Compilers Nuget до последней версии (не менее 2.x)
Ответ 8
Если вы используете фреймворк версии 4.5.1, то это просто замена langversion: 6 на langversion: 5. Добавьте это внутри в webconfig.
<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:5 /nowarn:1659;1699;1701">
<providerOption name="CompilerVersion" value="v4.0"/>
</compiler>
<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>
Ответ 9
Самым простым решением для меня было обновление .Net Compilers через Package Manager
Установить-пакет Microsoft.Net.Compilers
а затем изменив строки Web.Config к этому
<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>
Ответ 10
Я обновил Microsoft.Net.Compilers до версии 2.0 или выше
Ответ 11
в этом случае попробуйте использовать против 2019, я надеюсь, что помощь
Ответ 12
Я просто изменил langversion
на default
и у меня это сработало. 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>