2016-05-23 70 views
4

所以使用自定义生成配置部署我们的Web服务,部署后,我得到的错误:IIS 7无法找到Microsoft.CodDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider DLL

The CodeDom provider type "Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, could not be located.

试图浏览该网站时, 。看着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> 

奇怪的是建筑/在同一台服务器上部署用于调试的时候,我没有碰到这个问题,一切似乎正常工作(这会导致我相信这个错误存在于我的项目配置中,而不是部署服务器)。当我得到这个错误时,我正在构建的配置是我们自定义的QA配置,它输出到bin \ QA,所以我想知道是否有什么特别的我需要做的,让ASP.NET编译器查看特殊输出文件夹?

+1

好了,所以看起来我需要把这些文件在BIN \而已,而不需要重新编译配置的子文件夹。做出这些改变,现在一切都很好。所以任何人在将来都会遇到这个问题,确保所有的库最终都在站点的bin \文件夹中,而不是bin \〜config〜。 –

+0

您可以将其作为答案发布,然后接受它,以清楚说明您的问题已得到解决。 – svick

回答

0

所以这是因为我已经将配置名称的文件夹下的所有程序集的程序集嵌入到控制台/ windows应用程序中(例如'bin \ Debug') 。对于web应用程序,组件做而不是嵌套在配置文件夹下(例如,它们应该放在'bin \'中)。

希望这可以帮助别人!

0

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

问题是,您正在使用Roslyn编译器和IIS上的参考。 Roslyn在许多部署服务器上仍然没有完全支持。

解决方法是删除罗斯林,因为这不会影响项目的功能!

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