首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法找到"Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider“提供程序类型CodeDom

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

Stack Overflow用户
提问于 2015-10-24 15:11:08
回答 33查看 309.5K关注 0票数 194

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

再生产的步骤:

  1. 创建一个空的WebApi项目
  2. 将生成输出路径从"bin\“更改为”bin\Debug“

在我将构建输出路径从"bin\“更改为”bin\Debug“之前,一切都运行得很好--事实上,除"bin\”之外的任何输出路径都无法工作。

还有一点是,只要我把构建留在"bin\“中,就可以使用另一条输出路径到任何地方。

请帮助提供解决这一问题的解决方案。我想这会给实际部署带来成本问题。

EN

回答 33

Stack Overflow用户

发布于 2017-03-08 10:01:57

如果您的项目有Roslyn references,并且您正在IIS服务器上部署它,您可能会在网站上出现不必要的错误,因为许多托管提供商仍然没有升级它们的服务器,因此不支持Roslyn。

要解决这个问题,需要从项目模板中删除Roslyn编译器。删除Roslyn不应该影响代码的功能。它对我和我工作过的其他一些项目(C# 4.5.2)都很有效。

执行下列步骤:

  1. 使用下面所示的命令行从下面的Nuget包中删除(或者您可以通过右键单击Root解决方案并删除它们来使用Nuget包管理器的GUI )。 Microsoft.CodeDom.Providers.DotNetCompilerPlatform PM>卸载包Microsoft.Net.Compilers
  2. 从Web.Config文件中删除以下代码,然后重新启动IIS。(仅在步骤1不能解决问题时才使用此方法。)
票数 147
EN

Stack Overflow用户

发布于 2016-01-21 12:40:01

要小心遵循这个答案的建议。虽然它解决了手头的问题,但在以后的某个日期可能会导致不同的问题。

我也有同样的问题。显然,.NET编译器没有加载到GAC中。我解决这个问题的方法是:

首先,在包管理器控制台中键入:

代码语言:javascript
运行
复制
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

现在,由于某种原因,微软的绅士们决定不为我们安装它到GAC上。您可以通过打开Developer命令提示符并键入:

代码语言:javascript
运行
复制
gacutil -i "C:\*PATH TO YOUR APP CODE*\bin\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll"

结论

微软试图鼓励每个人使用nuget来做任何事情,如果没有你在nuget系统中遇到的偶尔的bug的话,这是很好的。尝试在不同的解决方案上使用相同的项目,意外地(或不)更新它在其中一个解决方案上使用的多个nuget中的一个,如果您运气不好,那么当您尝试构建另一个解决方案时,您就会明白我的意思。另一方面,在GAC中放置文件也会导致未来的问题,因为人们往往会忘记他们在那里放置的内容,然后在设置新的环境时忘记包含这些文件。另一种可能的解决方案是将文件放在第三方dll的中央文件夹中(尽管调用编译器第三方很奇怪),这会在设置新环境时造成引用中断的问题。如果您决定将dll安装到GAC,请小心,并记住您这样做了。如果没有,请再次下载每个项目的nuget,并承担由它引起的所有烦人的bug(至少在我最终厌倦它并将文件放在GAC中时会发生这种情况)。这两种方法都可能会给你带来头痛和问题,这只是一个你喜欢处理哪些问题的问题。微软建议使用nuget系统,一般情况下,听它们比不知名的程序员更好,除非您对nuget系统完全厌倦,并且习惯于与GAC打交道,使它成为您更好的选择。

票数 55
EN

Stack Overflow用户

发布于 2016-05-29 13:30:26

只需将下一个nuget包添加到您的项目- Microsoft.CodeDom.Providers.DotNetCompilerPlatform

也有同样的问题。

票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33319675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档