【问题标题】:ASP.NET CodeDom provider could not be located error找不到 ASP.NET CodeDom 提供程序错误
【发布时间】:2019-07-08 14:46:39
【问题描述】:

我在服务器上部署时遇到 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"/>

【问题讨论】:

    标签: c# asp.net codedom


    【解决方案1】:

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

    【讨论】:

    • 这帮助我弄清楚为什么当我尝试使用本地 IIS 在本地运行它时,我会收到此错误,但当我使用 IIS Express 时,它会运行良好。对我来说最重要的是,从使用本地 IIS 切换到 IIS Express 会将语法突出显示、智能感知、类型检查、预编译器等返回到 *.aspx 页面上 &lt;script runat="server"&gt;&lt;/script&gt; 标记之间的 C# 代码。我花了几个小时试图解决这个问题。谢谢!
    【解决方案2】:

    在我的例子中,我使用 Visual Studio 2019 创建了一个 Web API,当我在 VS2022 中打开该解决方案时,编译器没有突出显示错误。我切换回 2019 并发现编译问题。完成!

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 1970-01-01
      • 2013-12-30
      • 2021-12-15
      • 2018-02-27
      • 2013-03-07
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      相关资源
      最近更新 更多