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


91

Windows 2008Serverマシンで新しいASP.NETMVCアプリケーション(VS 2015コミュニティから直接)を実行しているときに、このエラーが発生し続けました。


3
言語バージョンを5にダウングレードします。以下を参照してください。言語バージョンを変更する方法
NASSER 2015

私の場合、System.Web.Mvc.dllをバージョン5.2.3から5.2.7にアップグレードしましたが、バージョンが正しくないため、この問題が修正されました。
ディノ劉

2019年にも、同様のエラーが発生しました。この関連するGitHubの問題も参照してください。
Uwe Keim

回答:


104

たくさんの人が出くわしているので、ここに投稿したいと思いました。

この人のおかげでクレイジーで簡単な回避策を見つけました:Expertdebugger

次のように、言語バージョンをC#6からC#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

私のためにそれを修正しました。彼に感謝します。


1
私を助けてくれてありがとう。
ああ。

28
これは、コンパイラに6ではなくC#バージョン5でコンパイルするように指示しているだけです。これは、.NET 4.6プロジェクトを作成する場合に必要なことではありません...実際に変更する必要があるのは、に示すようなコンパイラの種類です。この質問に対する他の答え!
ヌーノアガピート2015年

1
または、<system.codedom>ブロック自体を削除すると、問題も修正されます。
Anupam Singh

5
これをどこで変更しますか?このコードをどこに置く必要があるのですか?
アンブレイカブル2017年

それをweb.configまたは
app.config

81

C#6.0を使用する場合:

  1. プロジェクトの.NETバージョンが4.5.2よりも高いことを確認してください。
  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>

それがまさに私が探していたものです。ASP.NETMVCプロジェクトを.NETFramework 4.5.2から4.6にアップグレードした後、このエラーが発生し始めました。よくわかりませんが、VisualStudioでこれらの行を更新した方がいいと思います。
Zignd 2015年

3
これは実際に問題を修正し、コンパイラが古いバージョンにフォールバックする代わりに最新バージョンを使用できるようにするため、正解にする必要があります
SM3RKY 2016年

1
SM3RKYに同意します-この回答は、問題を回避するのではなく、問題を解決するため、より適切です。
ジョンストーリー

VS 2015コミュニティ以下を使用して、既存のプロジェクトのソリューションを.net 4.6にアップグレードすると、このエラーが発生します。VS 2015 Update 3を更新した後、この修正は新しいプロジェクトにデフォルトで適用されます。しかし、答えは正確な修正です!
Mahmut C

これにより、ASP.NET(Webフォーム)とVB.NETを使用する.Net 4.6.2プロジェクトの問題が修正されました
Eric Hewett

14

私の場合、エラーの直接の原因は次のとおりであることがわかりました。

ビルド->詳細->言語バージョン

エラーは言語に無効なオプションがあることを示しているため、これは理にかなっています。

しかし、これは以前は正常に機能していたので、選択されている必要があります。何が変わったの?私がまだ2015を使用している間に、私のチームのメンバーがvs 2017にアップグレードされたことがわかりました。彼がプロジェクトに変更を加えた後、言語バージョンが変更され、ソース管理の変更を受け取りました。しかし、選択したバージョンは私のバージョンのvsで利用できなかったため、空白でした。したがって、エラーが発生しました。言語ドロップダウンで値を選択した後(私はデフォルトを選択しました)、新しいエラーがポップアップしました。新しいエラーにより、新しいバージョンのc#を使用したコード行でビルドエラーが発生していました。同じ機能を実行するようにコードを変更しましたが、c#バージョンの構文と問題は解決しました。

したがって、エラーの直接の原因は実際には言語バージョンの無効な選択でしたが、根本的な原因は異なるvs / c#バージョンの競合が原因でした。


1
この答えは、他のすべてをチェックした後、私を助けました。感謝
MindRoasterMir

1
この答えは、また、私はC#8にプロジェクトセットを実行しようとしていたが、それが唯一の2019 VS私のVisual Studio 2017でサポートされていません。私の場合に適用される
ヴィニシウス・ガブリエル

13

私の場合、エラーは次のとおりです。

エラーCS1617 / langversionのオプション 'latest'が無効です。ISO-1、ISO-2、デフォルト、または1〜6の範囲の整数である必要があります。

メモ帳で.csprojファイルを開くと、次の行が表示されました。

<PropertyGroup>
    <LangVersion>latest</LangVersion>
</PropertyGroup>

1から6の範囲の整数の最新のものを変更しました

<LangVersion>6</LangVersion>

エラーが消えました!


どうもありがとうございました!今VS2015とUnity2018作品にデバッグ
8Observer8

メモ帳で正確に開く必要はありませんが、Visual Studioからプロジェクトをアップロードしてからプロジェクトを編集できます。これにより、この問題も修正されます。
Shantu

12

私の場合、間違ったMSBuild.exeを使用していました。

C:\Windows\Microsoft.NET\Framework64\v4.0.30319

エラーを解決するために、PATH環境変数を更新してVisual Studio 2017MSBuild.exeの使用を開始しました。

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSbuild.exe

詳細については、次のリンクを参照してください。 エラーCS1056:tfs継続的インテグレーションプロセスでmsbuildを実行している予期しない文字 '$'


:ここに同じ、私の場合、私は「\プログラムファイル(x86の)\ MSBuildの\ 14.0 \ビン\からMSBuild.exe C」からMSBuildのツールと使用MSBuildのインストール
ファルスタッフ

9

私の場合(別のシステムでプロジェクトを作成):

  1. プロジェクトをクリーンアップします(ソリューションエクスプローラーでプロジェクトを右クリックし、アイテムのクリーンアップをクリックします)。
  2. 次に、プロジェクトをビルドします(ソリューションエクスプローラーでプロジェクトを右クリックし、ビルドアイテムをクリックします)。

このプロジェクトを実行できます。


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

4

Microsoft.Net.Compilers Nugetパッケージを最新バージョン(少なくとも2.x)にアップグレードします


3

私にとって最も簡単な解決策は、パッケージマネージャーを介して.Netコンパイラをアップグレードすることでした。

インストールパッケージ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>

1

ASP.NET MVC 4プロジェクトがMicrosoft.Net.Compilersパッケージの特定のバージョンを参照していたため、これが問題であることが判明しました。Visual Studioは、この特定のパッケージのコンパイラーを使用しており、コンピューターにインストールされているコンパイラーは使用していませんでした。

警告か何かがVS2019から良かったでしょう:-)

解決策は、Microsoft.Net.Compilersパッケージを新しいバージョンに更新することです。

バージョン1.xはC#6用ですバージョン2.xはC#7用ですバージョン3.xはC#8用ですこれをどのように解決したかはすぐにはわかりませんでした。Visual Studioは、プロジェクト設定で新しいバージョンを選択することにより、その設定がプロジェクトにインストールされているパッケージと競合することを示唆または示唆した可能性があります。

(IDEが実際に使用しようとしているCSC.EXEを見つけるために、診断レベルのMSBuildログをオンにすることになりました)

https://developercommunity.visualstudio.com/content/problem/519531/c-7x-versions-do-not-seem-to-work-in-vs2019.html



0

私は変更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>


0

ソリューションをクリーンアップして再度ビルドする私の場合、以前の設定が不一致のためにブロックされていたものは何でも。新しいプロジェクトをインポートしてビルドし、バージョンを変更してみました。ソリューションをクリーンアップし、ビルドがうまくいきました。


0

私の場合、mattorgによるkeycloak実装のサンプルコードを含むライブラリをGITHUBからダウンロードしていました:https//github.com/mattmorg55/Owin.Security.Keycloak/tree/dev/samples

.Net Framework 4.6.1を使用したので、解決策は非常に簡単でしたが、プロジェクトは最初に4.6.2を使用するように頼みました。ダウンロードしましたが、Visual Studionのすべてのインスタンスを再起動したとき(またはすべてのインスタンスを閉じたとき)、最初にアクティブに選択されました。プロジェクトは4.6.1に操作されました(私は望んでおらず、そう選択しましたが)。

そのため、構成を再度選択して.Net Framework 4.6.1を選択した後、エラーはすぐに消えました。


0

私の場合、エラーメッセージは次のとおりです。

ASPNETCOMPILER:エラーCS1617:/ langversionのオプション「7.3」が無効です。ISO-1、ISO-2、デフォルト、または1〜6の範囲の整数である必要があります。

このGitHubの問題で述べた、と。このVS開発者コミュニティポスト古いのバグのようですMicrosoft.CodeDom.Providers.DotNetCompilerPlatform NuGetパッケージ。

このNuGetパッケージを3.6.0にアップグレードした後も、Webアプリケーションでエラーが解決しませんでした。

解決

これを機能させるには、Webアプリケーションの古い「bin \ Roslyn」フォルダを削除する必要があることがわかりました。

新しいMicrosoft.CodeDom.Providers.DotNetCompilerPlatformNuGetパッケージ(私の場合は3.6.0)には、独自の「Rosyln」フォルダーが含まれていないようです。存在する場合は、コンパイル時にその古い「Roslyn」フォルダーが優先されます。


0

これは、リポジトリを新しい場所に移動した後でリポジトリをプルダウンしたときに発生しました。解決策は、このエラーを示していた各プロジェクトをアンロードしてからリロードすることでした。

他のいくつかのオプションを試しましたが、何も機能しませんでした。また、この状況では、構成ファイルが言語バージョン6を使用するように設定されていたため、デフォルトに設定しても問題は修正されませんでした。


0

上記のすべてのオプションが機能せず、Microsoft.Net.CompilersやCodeDomなどのnugetパッケージを使用しても機能しない場合は、プロジェクトファイルを開いているプロジェクトファイルに問題があります。プロジェクトファイルは、選択した言語をサポートしていないコンパイラオプションの1つを使用しています。notepad ++でプロジェクトファイルを開き、次の行を削除します。

オリジナルのプロジェクトファイル

<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
  <!--Don't delete below one-->
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

次の行を削除します

  <Import Project="..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.