不用roslyn发布网站

Publish website without roslyn

我正在尝试使用 Visual Studio 2015 和 .NET 4.5.1 创建 Web 应用程序。 当我发布网站时,visual studio 创建名为 roslyn.

的文件夹

我知道它用于动态编译代码,但不幸的是我的托管服务提供商不允许我在他们的服务器上执行编译器。

如何在没有roslyn的情况下像以前的Visual Studio版本那样发布网站?

编辑: 我在尝试访问我的网站时遇到此错误。

IIS 似乎试图执行 roslyn\csc.exe 但我的用户帐户没有执行该操作的权限。使用以前版本的 Visual Studio,此错误不会出现。

我刚刚遇到了同样的问题。当你创建一个新的 web 项目时,两个 nuget 包会自动添加到你的项目中。如果删除它们,您的问题应该得到解决。包名称是:“Microsoft.CodeDom.Providers.DotNetCompilerPlatform”和“Microsoft.Net.Compilers”。

在搜索了我面临的相同问题后,我就来到了这里。看了楼上的回答是对的

我给出答案,因为Here是很好的文章解释:

  1. 为什么发布代码有这个exe和开发环境?
  2. 有什么好处以及如何去除?

This is also the very good article, about the history of this exe

我遇到了同样的问题。按照 here 中的步骤操作。基本上:

  1. 卸载软件包

    Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform <Your Web API project name>
    
  2. 在您的发布配置文件设置中,取消选中 "Allow precompiled site to be updatable"。您可以在“设置”>“发布期间预编译”>“配置

  3. ”下找到它

我在 2016 年 9 月接管现有的 ASP.NET 程序时遇到了同样的问题。我发现在解决方案的不同项目中安装了Kemal提到的两个编译包的多个版本。

所以首先我更新了它们以使其相同。 VS 不会告诉您在这种情况下有更新可用(或者我错过了它们?)

然后我不得不重新启动 VS2015 以便正确清理包。

经过无数努力....并据此website。 我发现你可以在 MSBuild 中使用 /p:UseWPP_CopyWebApplication=true /p:PipelineDependsOnBuild=false 来转换 web.config,这也包括构建中的 roslyn 编译器。输出与在 Visual Studio 中发布到文件系统

中得到的输出相同

roslyn 存储库中有一个关于此问题的open bug

在我的例子中,我所要做的就是将 dll Microsoft.CodeDom.Providers.DotNetCompilerPlatform 从版本 1.0.6 降级到 1.0.5