エラー/ langversionの無効なオプション '6'。ISO-1、ISO-2、3、4、5、またはデフォルトである必要があります


89

.NET 4.6をターゲットにして、C#言語バージョンを6に変更することで最新のC#バージョンを利用しようとしています。

しかし、コンパイル中にこのエラーが発生しました:

エラー/ langversionの無効なオプション '6'。ISO-1、ISO-2、3、4、5、またはデフォルトである必要があります

/langversion:6Web.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でデフォルトでインストールされなかった場合に備えてです。

プロジェクトは、Visual Studio 2015によって作成された標準のASP.NET MVCテンプレートプロジェクトです。


1
私の場合、削除する必要がありました/langversion:6...
bohdan_trotsenko

@modosansrevesこれはデフォルトの言語バージョンに戻ります。C#5です。C#6言語機能を使用できるかどうか確認してください。
Rosdi Kasim、2015

確かに。これにより、C#6機能を使用できなくなります。ありがとう。
bohdan_trotsenko

回答:


88

コンパイラの「タイプ」に注意してください Web.Configフレームワークのバージョンを変更するときファイルください。

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
これは機能します。..アプリケーションを.NET 4.6およびC#6に再ターゲットするときに、これを自動的に更新しないため、Visual Studio 2015のバグと見なしていますが
Rosdi Kasim

あなたはその通りだと思います。私はそれに悩まされて、あなたの質問に出くわしました。幸いにも私が見つけた次のリンクは答えでした。
DrewB

1
すべての.NETターゲットにユニバーサルCSharpCodeProviderはありますか?
denfromufa 2017

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

30

問題を解決するには、次のNuGetパッケージ(インストールされている方)を更新します。

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

これは回答というよりはコメントの方が多い
Al Lelopath

2
これが本当の解決策です!! このnugetパッケージをアンインストールして、問題を解決してください
Geomorillo

c#6.0に切り替えましたが、パッケージはまだ古いバージョンのままでした。1.0から1.0.4に更新するとうまくいきました。
Mixxiphoid 2017年

7
@AlLelopathは、それが小さな答えだからといってコメントにするわけではありません。この小さな「コメント」で私や他の人たちの問題が解決されたので、答えのままにしておくとよいでしょう。
Shimmy Weitzhandler 2017年

14

1.プロジェクトに移動し、プロジェクトのプロパティを選択します。

2 [ビルド]を選択し、[詳細]ボタンをクリックします。

3.言語バージョンのデフォルトを選択します。

4.保存します。

https://youtu.be/IP8feQeWqkk


VS2013でこのエラーが発生しました。残念ながら、この解決策は私にはうまくいきませんでした。
Jviaches 2017

2
これは私のために働いた。他のすべての推奨ソリューションは、web.configファイルの変更、またはNuGetパッケージ/更新のダウンロードを中心に展開されました。コンパイラーは無効なバージョンに関するエラーをスローし続けました。構成ファイルにその設定がなかったため、混乱しました。高度なビルドプロパティがNuGetパッケージの更新によって自動的に更新されなかったことが判明しました。
キランラマスワミー2017

3

プロジェクトがVS2015に完全にアップグレードされなかった場合、このような動作に遭遇しました。VS2013で2015からのソリューションを開いた場合-このエラーが発生します


私も、このエラーは基本的にVS2015をインストールする必要があることを意味すると思います!プロジェクトの他の誰かが、2013年では対応できない新しい言語機能を使用しています
JonnyRaa

2

NuGetパッケージマネージャーコンソールを開き、次のコマンドを実行します

更新パッケージMicrosoft.CodeDom.Providers.DotNetCompilerPlatform -r


0

ASP.NETの奇妙なコンパイルエラーに対する回答をご覧ください

C#言語を5にダウングレードしても問題はマスクされます。誰かがC#6の機能を使用するとすぐに、Webサイト/プロジェクトが機能しなくなり、修正に時間を費やすことになります。リンクの解決策を試してください。


0

Visual Studio 2019でアプリケーションを初めてロードしたときにも同様の問題がありました。「Microsoft.CodeDom.Providers.DotNetCompilerPlatform」ナゲットを新しいバージョンに更新するとうまくいきました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.