サーバーへの展開中にASP.NETエラーが発生しました。
CodeDomプロバイダーの種類 "Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider、Microsoft.CodeDom.Providers.DotNetCompilerPlatform、Version = 2.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35"が見つかりませんでした。
このエラーは特定のサーバーでのみ発生し、ローカルまたは別のサーバーで実行すると問題なく機能します。
packages.config CodeDom行
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.0" targetFramework="net461" />
Web.Config CodeDom行
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
ほとんどの場合、プロジェクトにはRoslyn参照があり、展開先のIISサーバーはサポートしていません。サーバーをアップグレードするか、プロジェクトからRoslynコンパイラを削除してください。Roslynの削除は非常に安全ですそして何も影響を与えるべきではありません。
プロジェクトからRoslynを削除するには、コマンドを実行して次のNugetパッケージを削除します。
PM> Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
PM> Uninstall-package Microsoft.Net.Compilers
またはNuget GUIを使用(プロジェクトを右クリック-> Nugetパッケージの管理)
これで問題が解決しない場合は、Web.configに移動して次の構成を削除し、IISを再起動します。
<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>