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

7
当我在服务器上部署时,遇到了一个与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"/>
2个回答

5

很可能项目具有Roslyn引用,但您要部署的IIS服务器不支持它。 要么升级服务器,要么从项目中删除Roslyn编译器。 移除Roslyn非常安全,不应对任何内容产生影响。

要从项目中移除Roslyn,请运行以下命令删除以下Nuget Packages:

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
这帮助我找出了为什么当我尝试使用本地IIS在本地运行它时,会出现错误,但是当我使用IIS Express时,它可以正常运行的原因。对我来说最重要的是,从使用本地IIS切换到IIS Express可以将语法高亮、智能感知、类型检查、预编译等功能返回到*.aspx页面上<script runat="server"></script>标签之间的C#代码中。我花了几个小时来解决这个问题。谢谢! - Inphinite Phractals

0
在我的情况下,我使用 Visual Studio 2019 制作了一个 Web API,在 VS2022 中打开该解决方案时,编译器没有突出显示错误。我切换回 2019 并找到了编译问题。完成!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接