【问题标题】:Publish website without roslyn在没有 roslyn 的情况下发布网站
【发布时间】:2015-08-29 05:02:11
【问题描述】:

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

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

如何发布没有roslyn的网站像以前版本的Visual Studio?

编辑: 尝试访问我的网站时出现此错误。

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

【问题讨论】:

  • 另外,Roslyn 只是一组 DLL。主人不知道也不关心他们在做什么。
  • @Slaks IIS 试图执行 csc.exe。见编辑。
  • 如果您使用的是 Plesk,您可以禁用“网站专用 IIS 应用程序池”,那么您甚至不需要删除这些软件包!

标签: visual-studio visual-studio-2015 roslyn


【解决方案1】:

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

【讨论】:

  • 这适用于第三方网络托管服务提供商。对此有两个疑问 - 1) 删除这些 Nuget 包会以任何方式影响产品吗? 2) 是否可以将这些包从项目模板本身中删除以避免每次都进行此练习?
  • 1) 对产品的工作流程或逻辑没有任何影响;但是@Ajay2707 提供的url (itorian.com/2015/09/roslyn-cscexe-and-vbcexe-deployment-on.html) 说这个包会影响页面加载时间。 2)我不知道你怎么能做到这一点,但如果你能做到,那么应该没有任何问题。
  • 删除了两个 NuGet 包。删除了配置声明。编译或发布时仍在创建此文件夹。只有我的应用程序使用的 NuGet 包是“Newtonsoft.Json”。我也需要卸载吗?
  • 请记住,删除这些包会破坏 C# 6 功能的使用。这可以通过取消选中预编译视图等的“允许预编译站点可更新”来解决。
  • @RanjanKumar:在文本编辑器中打开您的 csproj 文件,并删除与 Kemal 回答中描述的 NuGet 包相对应的节点。这可能包括 Import 节点、Target 节点 (EnsureNugetPackageBuildImports) 和 Reference 节点。同时删除 web.config 的 <system.codedom> 节点。
【解决方案2】:

我遇到了同样的问题。遵循here 的步骤。基本上:

  1. 卸载包

    Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform <Your Web API project name>
    
  2. 在您的发布配置文件设置中,取消选中“允许预编译站点可更新”。您可以在“设置”>“发布期间预编译”>“配置”下找到它

【讨论】:

  • 这样你就不能在视图中使用 C#6 特性了。
  • 我在 v3.6.0 中遇到了这个问题。任何想法为什么?
【解决方案3】:

在搜索了我的同一张脸后,我才来到这里。我读了上面的答案是正确的。

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

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 无法理解网站链接上的文章,但请按照您的建议在 MSBuild 中添加构建参数。就像您说的,输出与我们发布到文件系统时的输出相同。谢谢
    【解决方案5】:

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

    就我而言,我所要做的就是将 dll Microsoft.CodeDom.Providers.DotNetCompilerPlatform 从版本 1.0.6 降级为 1.0.5

    【讨论】:

      【解决方案6】:

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

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

      然后我必须重新启动 VS2015 才能正确清理软件包。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-03
        • 2022-01-27
        • 2011-06-01
        相关资源
        最近更新 更多