我正在尝试使用Visual Studio 2015和.NET 4.5.1创建Web应用程序。
当我发布网站时,visual studio会创建名为roslyn
的文件夹。
我知道它用于动态编译代码,但不幸的是我的托管服务提供商不允许我在他们的服务器上执行编译器。
如何在不使用roslyn\csc.exe
的情况下发布网站,就像以前版本的Visual Studio一样?
编辑: 尝试访问我的网站时出现此错误。
似乎IIS尝试执行{{1}},但我的用户帐户没有权限执行此操作。使用以前版本的Visual Studio,此错误不会显示。
答案 0 :(得分:168)
我刚遇到同样的问题。创建新的Web项目时,会自动将两个nuget包添加到项目中。如果你删除它们,你的问题应该解决。软件包名称为:“ Microsoft.CodeDom.Providers.DotNetCompilerPlatform ”和“ Microsoft.Net.Compilers ”。
答案 1 :(得分:13)
我有同样的问题。遵循here中的步骤。基本上是:
卸载软件包
Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform <Your Web API project name>
在发布配置文件设置中,取消选中“允许预编译的网站可更新”。你可以在Settings&gt;下找到它。发布期间预编译&gt;配置
答案 2 :(得分:2)
经过无数次的努力......并根据此website。
我发现你可以在MSBuild中使用/p:UseWPP_CopyWebApplication=true /p:PipelineDependsOnBuild=false
来转换web.config,这也包括构建中的roslyn编译器。输出与通过在Visual Studio中发布到文件系统
答案 3 :(得分:2)
roslyn存储库中有关于此问题的open bug。
就我而言,我所要做的只是将dll Microsoft.CodeDom.Providers.DotNetCompilerPlatform
从版本1.0.6
降级为1.0.5
。
答案 4 :(得分:1)
在找到同样发给我的脸后,我才来到这里。我看了上面的答案是正确的。
我给出答案,因为Here是一篇很好的解释文章:
This is also the very good article, about the history of this exe
答案 5 :(得分:0)
当我接手现有的ASP.NET程序时,我在2016年9月遇到了同样的问题。我发现Kemal提到的两个编译器软件包的多个版本安装在解决方案的不同项目中。
所以首先我更新了它们。 VS没有告诉你在这种情况下可以获得更新(或者我可能错过了它们?)
然后我必须重新启动VS2015才能正确清理软件包。