找不到ASP.NET CodeDom提供程序错误

时间:2019-07-08 14:46:39

标签: c# 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"/>

1 个答案:

答案 0 :(得分:0)

该项目很可能具有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>