Windows 2008Serverマシンで新しいASP.NETMVCアプリケーション(VS 2015コミュニティから直接)を実行しているときに、このエラーが発生し続けました。
Windows 2008Serverマシンで新しいASP.NETMVCアプリケーション(VS 2015コミュニティから直接)を実行しているときに、このエラーが発生し続けました。
回答:
たくさんの人が出くわしているので、ここに投稿したいと思いました。
この人のおかげでクレイジーで簡単な回避策を見つけました: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=\"Web\" /optionInfer+">
<providerOption name="CompilerVersion" value="v4.0"/>
</compiler>
</compilers>
</system.codedom>
langversion:6
下に向かって6から5に変更します-langversion:5
私のためにそれを修正しました。彼に感謝します。
C#6.0を使用する場合:
.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>
私の場合、エラーの直接の原因は次のとおりであることがわかりました。
エラーは言語に無効なオプションがあることを示しているため、これは理にかなっています。
しかし、これは以前は正常に機能していたので、選択されている必要があります。何が変わったの?私がまだ2015を使用している間に、私のチームのメンバーがvs 2017にアップグレードされたことがわかりました。彼がプロジェクトに変更を加えた後、言語バージョンが変更され、ソース管理の変更を受け取りました。しかし、選択したバージョンは私のバージョンのvsで利用できなかったため、空白でした。したがって、エラーが発生しました。言語ドロップダウンで値を選択した後(私はデフォルトを選択しました)、新しいエラーがポップアップしました。新しいエラーにより、新しいバージョンのc#を使用したコード行でビルドエラーが発生していました。同じ機能を実行するようにコードを変更しましたが、c#バージョンの構文と問題は解決しました。
したがって、エラーの直接の原因は実際には言語バージョンの無効な選択でしたが、根本的な原因は異なるvs / c#バージョンの競合が原因でした。
私の場合、エラーは次のとおりです。
エラーCS1617 / langversionのオプション 'latest'が無効です。ISO-1、ISO-2、デフォルト、または1〜6の範囲の整数である必要があります。
メモ帳で.csprojファイルを開くと、次の行が表示されました。
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
1から6の範囲の整数の最新のものを変更しました
<LangVersion>6</LangVersion>
エラーが消えました!
私の場合、間違った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を実行している予期しない文字 '$'
言語バージョンを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
私にとって最も簡単な解決策は、パッケージマネージャーを介して.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=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
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ログをオンにすることになりました)
私は変更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>
ソリューションをクリーンアップして再度ビルドする私の場合、以前の設定が不一致のためにブロックされていたものは何でも。新しいプロジェクトをインポートしてビルドし、バージョンを変更してみました。ソリューションをクリーンアップし、ビルドがうまくいきました。
私の場合、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を選択した後、エラーはすぐに消えました。
私の場合、エラーメッセージは次のとおりです。
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」フォルダーが優先されます。
これは、リポジトリを新しい場所に移動した後でリポジトリをプルダウンしたときに発生しました。解決策は、このエラーを示していた各プロジェクトをアンロードしてからリロードすることでした。
他のいくつかのオプションを試しましたが、何も機能しませんでした。また、この状況では、構成ファイルが言語バージョン6を使用するように設定されていたため、デフォルトに設定しても問題は修正されませんでした。
上記のすべてのオプションが機能せず、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')" />