web-dev-qa-db-ja.com

ASP.NET CodeDomプロバイダーが見つかりませんエラー

サーバーへの展開中に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"/>
3
Adam Sancho

ほとんどの場合、プロジェクトには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=\&quot;Web\&quot; /optionInfer+" />
</compilers>
1
Sergei Russkikh