CodeDom 提供程序类型“Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider"无法定位 [英] The CodeDom provider type "Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider" could not be located

查看:55
本文介绍了CodeDom 提供程序类型“Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider"无法定位的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个使用 VS2015 的 WebApi 项目.

It's a WebApi project using VS2015.

重现步骤:

  1. 创建一个空的 WebApi 项目
  2. 将构建输出路径从bin"更改为binDebug"
  3. 运行

一切正常,直到我将构建输出路径从bin"更改为binDebug"事实上,除bin"之外的任何输出路径都不起作用.

Everything is working perfectly until I changed Build Output path from "bin" to "binDebug" In fact, any Output path other than "bin" won't work.

另外一点是,只要我在bin"中留下一个构建,就可以有另一个输出路径到任何地方.

One little additional thing is that, having another output path to anywhere would work as long as I left a build in "bin".

请帮助提供解决方案来解决这个问题.我想这会在实际部署中产生成本问题.

Please help providing solution to solve this. I guess that'll cost problem on actual deployment.

推荐答案

如果您的项目有 Roslyn 引用,并且您将其部署在 IIS 服务器上,您可能会得到网站上出现不必要的错误,因为许多托管服务提供商仍未升级其服务器,因此不支持 Roslyn.

If your project has Roslyn references and you are deploying it on an IIS server, you might get unwanted errors on the website as many hosting providers still have not upgraded their servers and hence do not support Roslyn.

要解决此问题,您需要从项目模板中删除 Roslyn 编译器.删除 Roslyn 不应影响代码的功能.它对我和我工作的其他一些项目 (C# 4.5.2) 运行良好.

To resolve this issue, you will need to remove the Roslyn compiler from the project template. Removing Roslyn shouldn't affect your code's functionality. It worked fine for me and some other projects (C# 4.5.2) on which I worked.

执行以下步骤:

  1. 使用如下所示的命令行从以下 Nuget 包中删除(或者您可以通过右键单击根项目解决方案并删除它们来使用 Nuget 包管理器的 GUI).

PM> Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
PM> Uninstall-package Microsoft.Net.Compilers

  • 从您的 Web.Config 文件中删除以下代码并重新启动 IIS.(仅当第 1 步不能解决您的问题时才使用此方法.)

    <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>
    

    这篇关于CodeDom 提供程序类型“Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider"无法定位的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆