发布没有roslyn的网站

Niy*_*wan 85 visual-studio roslyn visual-studio-2015

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

在此输入图像描述

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

如何在不使用roslyn以前版本的Visual Studio的情况下发布网站?

编辑:我试图访问我的网站时遇到此错误.

在此输入图像描述

似乎IIS尝试执行roslyn\csc.exe但我的用户帐户没有这样做的权限.使用以前版本的Visual Studio,此错误不会显示.

小智 177

我刚遇到同样的问题.创建新的Web项目时,会自动将两个nuget包添加到项目中.如果你删除它们,你的问题应该解决.包名称为:" Microsoft.CodeDom.Providers.DotNetCompilerPlatform "和" Microsoft.Net.Compilers ".

  • @RanjanKumar:在文本编辑器中打开您的csproj文件,并删除与Kemal的答案中描述的NuGet包相对应的节点.这可能包括`Import`节点,`Target`节点(EnsureNugetPackageBuildImports)和`Reference`节点.还要删除web.config的`<system.codedom>`节点. (8认同)
  • 请记住,删除这些包将破坏C#6功能的使用.这可以通过取消选中""允许预编译的站点可更新"来解决,这预先编译了视图等. (7认同)
  • 删除了两个NuGet软件包。删除了配置声明。仍然在编译或发布时创建此文件夹。.我的应用程序使用的唯一NuGet包是“ Newtonsoft.Json”。我也需要卸载吗? (2认同)

小智 14

我遇到过同样的问题.按照这里的步骤.基本上:

  1. 卸载软件包

    Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform <Your Web API project name>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在发布配置文件设置中,取消选中"允许预编译的站点可更新".您可以在发布>配置期间的设置>预编译下找到此信息

  • 这样您就无法在视图中使用C#6功能. (7认同)