IIS 7无法找到Microsoft.CodDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider DLL

时间:2016-05-23 16:58:16

标签: c# asp.net .net iis-7 c#-6.0

因此,在使用自定义构建配置部署Web服务时,部署后我会收到错误:

  

无法找到CodeDom提供程序类型" Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider,Microsoft.CodeDom.Providers.DotNetCompilerPlatform。

尝试浏览网站时。查看bin \ ~configurationName~文件夹,我可以找到指定的DLL就好了。错误是在我的web.config中引用这些行:

  <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>
  </system.codedom>

奇怪的是,在同一台服务器上构建/部署Debug时,我没有遇到这个问题,一切似乎都运行正常(这让我相信我的项目配置存在这个错误,而不是部署服务器)。我在获取此错误时构建的配置是我们自定义的QA配置,它输出到bin \ QA,所以我想知道我是否需要做一些特别的事情才能获得ASP .NET编译器查看特殊输出文件夹?

2 个答案:

答案 0 :(得分:0)

长期部署解决方案暂时避免使用Roslyn。

问题是您在IIS上使用 Roslyn编译器和引用。 Roslyn仍然没有在许多部署服务器上获得完全支持。

解决方案是删除Roslyn ,因为这不会影响项目功能!

我对另一个与此类问题有关的问题写了类似的答案。看看我的回答https://stackoverflow.com/a/42668206/1436594

答案 1 :(得分:0)

所以这是因为我已经嵌套了具有配置名称的文件夹下的站点的所有程序集,就像在控制台/ windows应用程序中那样(例如&#39; bin \ Debug&#39;)。对于Web应用程序,程序集 not 嵌套在config文件夹下(例如,它们应该进入&#39; bin \&#39;)。

希望这有助于其他人!