Помилка Недійсний параметр '6' для / langversion; має бути ISO-1, ISO-2, 3, 4, 5 або за замовчуванням


90

Я намагаюся націлитись на .NET 4.6, а також скористатися останньою версією C #, змінивши версію мови C # на 6.

Однак під час компіляції я отримав таку помилку:

Помилка Недійсний параметр '6' для / langversion; має бути ISO-1, ISO-2, 3, 4, 5 або за замовчуванням

Якщо я /langversion:6оновлюю параметр Web.Config до 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">

Але як мені це вирішити, не вдаючись до нижчої мовної версії?

Я використовую Visual Studio 2015 Community Edition, і я також встановив .NET Framework 4.6 вручну на випадок, якщо Visual Studio 2015 його не встановив за замовчуванням.

Проект - це стандартний проект шаблону ASP.NET MVC, створений Visual Studio 2015.


1
У моєму випадку мені довелося лише видалити /langversion:6...
bohdan_trotsenko

@modosansreves Це повернеться до мовної версії за замовчуванням .. це C # 5, я вважаю ... будь ласка, перевірте, чи можете ви використовувати будь-яку функцію мови C # 6.
Росді Касім

Справді. Це позбавляє використання функцій C # 6. Дякую.
bohdan_trotsenko

Відповіді:


89

Зверніть увагу на "тип" компілятора у Web.Configфайлі при зміні версії Framework:

для 4,5 і C # 5 -

type="Microsoft.CSharp.CSharpCodeProvider...

для 4.6 та C # 6 -

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

Більше інформації в цьому дописі на форумі


20
Це працює! .. Хоча я вважаю це помилкою у Visual Studio 2015 для не автоматичного оновлення цього, коли я перенацілюю свою програму на .NET 4.6 та C # 6.
Росді Касім

Я думаю, ти маєш рацію в цьому. Я вколовся в це і наткнувся на ваше запитання. На щастя, наступним посиланням, яке я знайшов, була відповідь.
DrewB

1
Чи існує універсальний CSharpCodeProvider для всіх цілей .NET?
denfromufa

1
У моєму web.config був правильний тип, а мовну версію встановлено за замовчуванням. <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" />Просто очищення рішення та перекомпіляція виправили його для мене у VS 2019.
joym8,

31

Оновіть наступні пакети NuGet (залежно від того, який із них встановлено), щоб вирішити проблему:

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • Microsoft.Net.Compilers

це більше коментар, ніж відповідь
Al Lelopath 02

2
Це справжнє рішення !! Видаліть цей nuget-пакет і вирішена проблема для мене
Geomorillo 02.03.17

Я перейшов на c # 6.0, але пакет все ще був на старій версії. У мене працювало оновлення з 1.0 до 1.0.4.
Mixxiphoid

7
@AlLelopath лише тому, що це невелика відповідь, не робить це коментарем. Цей крихітний "коментар" вирішив проблему як для мене, так і для інших, тому краще залишитись як відповідь.
Shimmy Weitzhandler

14

1. Перейдіть до проекту та виберіть властивості проекту.

2 Виберіть «Збірка» та натисніть кнопку «Додатково».

3. Виберіть Мовна версія за замовчуванням.

4.Збережіть.

https://youtu.be/IP8feQeWqkk


Була ця помилка у VS2013. На жаль, це рішення для мене не спрацювало.
Jviaches

2
Цей працював у мене. Всі інші запропоновані рішення оберталися на зміні файлу web.config або, як альтернатива, завантаженні пакунків / оновлень NuGet. Компілятор продовжував видавати помилки щодо недійсної версії, що мене бентежило, оскільки цього параметра у мене не було у файлі конфігурації. Виявляється, розширені властивості збірки не оновлювались автоматично оновленням пакета NuGet.
Кіран Рамасвамі

3

Я зустрічав таку поведінку, якщо проект не був повністю оновлений до VS2015. Якщо ви відкриєте рішення з 2015 року у VS2013 - ви отримаєте цю помилку


Я теж, я думаю, ця помилка в основному означає, що вам потрібно встановити VS2015! Хтось ще в проекті використовує новіші мовні функції, з якими 2013 рік не впорається
JonnyRaa,

2

Відкрийте консоль NuGet Package Manager і запустіть наступну команду

Пакет оновлення Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r


0

Дивіться відповідь на дивну помилку компіляції ASP.NET! .

Пониження вашої мови C # до 5 лише маскує проблему, як тільки хтось використовує функцію C # 6, ваш веб-сайт / проект зламається, і ви все одно витратите час на його виправлення знову. Спробуйте рішення за посиланням.


0

У мене була подібна проблема, коли я вперше завантажував програму в Visual Studio 2019. Оновлення nuget "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" до пізнішої версії зробило для мене фокус.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.