CS1617: Неверная опция "6 для /langversion; должны быть ISO-1, ISO-2, 3, 4, 5 или по умолчанию

Не удалось получить эту ошибку при запуске нового приложения ASP.NET MVC (прямо из сообщества VS 2015) на компьютере под управлением Windows 2008 Server.

Ответ 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=\&quot;Web\&quot; /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=\&quot;Web\&quot; /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

Я обнаружил, что прямой причиной ошибки в моем случае было:

build -> advanced -> language version

это имеет смысл, поскольку в сообщении об ошибке указывается, что для языка существует недопустимая опция.

но раньше это работало нормально - значит, это было выбрано. что изменилось? Оказывается, член моей команды обновился до 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=\&quot;Web\&quot; /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=\&quot;Web\&quot; /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=\&quot;Web\&quot; /optionInfer+">
      <providerOption name="CompilerVersion" value="v4.0″/>
  </compiler>
</compilers>