如何为发布模式设置debug false

时间:2014-02-28 04:33:29

标签: asp.net asp.net-mvc asp.net-mvc-4 bundling-and-minification web.config-transform

我有这个web.config文件,其编译选项设置如下

的Web.config

<configuration>
...
<system.web>
    <compilation debug="true" targetFramework="4.5" />
    ...
</system.web>
</configuration>

默认情况下,这是Visual Studio为发布模式提供的内容。

Web.Release.config

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
 <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
 </system.web>
</configuration>

我将它用于MVC4项目。基于this tutorial,我希望当应用程序在发布模式下运行时,将提供缩小版本的js和css。但这似乎并不起作用,并且正在提供js和css的非缩小版本。另一方面,如果我在web.config中显式将debug设置为false,则正确提供最小版本。

发布模式下运行应用程序时似乎编译标记转换问题,但我不明白Web中的相同内容有什么问题.Release.config

简而言之,我无法通过在发布模式下运行应用程序来实现捆绑和缩小工作。

6 个答案:

答案 0 :(得分:17)

Web.Reconfig.config中定义的Web.config转换仅在部署/发布相关配置的项目时完成。

只需将Visual Studio中的活动配置更改为Release并运行应用程序,就不会运行转换。因此,web.config保持不变。当从包含原始web.config的项目目录运行Web应用程序时,此行为是合理的。如果Visual Studio要转换web.consign,则原始web.config将被更改。

如果尚未创建部署配置文件,则可以将应用程序发布到文件系统以验证行为。选择Release作为运行部署的配置。转换应按预期执行。

答案 1 :(得分:15)

如果您要测试已在Global.asax文件中设置的.NET捆绑和缩小,还可以使用预编译表示法...例如

#if DEBUG
  BundleTable.EnableOptimizations = false;
#else
  BundleTable.EnableOptimizations = true;
#endif

有了这个,你的应用程序不需要在构建操作中触发转换,并且会像你想要的那样运行。

答案 2 :(得分:14)

我的回答可能会迟到,但这对我有用:

我改变了界限:

<compilation xdt:Transform="RemoveAttributes(debug)" />

到:

<compilation xdt:Transform="Replace" debug="false" targetFramework="4.5" />

这基本上就是诀窍,因为我认为优化器正在寻找要存在的Debug值和==&#34; false&#34;。

希望这可以帮助那些不想通过代码管理此问题的人。

答案 3 :(得分:5)

可能是对Omar.Alani的答案的改进:

在Release转换中,替换以下行:

<compilation xdt:Transform="RemoveAttributes(debug)" />

以下内容:

<compilation debug="false" xdt:Transform="SetAttributes" />

答案 4 :(得分:0)

删除调试属性就足够了RemoveAttributes(debug)。   它的工作方式类似于debug = false。

答案 5 :(得分:0)

compilation debug="false" xdt:Transform="SetAttributes"

在发布Azure部署时激活XML转换以进行特定于目标环境的配置转换时非常有用。

在天蓝色部署时检查XML转换时,将完成以下顺序:

  • 在web.config上应用web.release.config
  • 在修改后的web.config上应用web.stageName.config。

但是web.release.config已应用于web.base.config,因此

compilation xdt:Transform="RemoveAttributes(debug)" 

用于web.release.config文件中,web.config在调试时已删除了debug属性,并且在部署时使用web.release.config再次进行转换,尝试应用上述命令,但失败。