如何为发布模式设置debug false

Jat*_*tin 26 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>
Run Code Online (Sandbox Code Playgroud)

这是默认情况下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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

Mar*_*kus 17

只有在为相关配置部署/发布项目时,才会在Web.Release.config中定义Web.config转换.

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

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


bea*_*mes 15

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

#if DEBUG
  BundleTable.EnableOptimizations = false;
#else
  BundleTable.EnableOptimizations = true;
#endif
Run Code Online (Sandbox Code Playgroud)

有了这个,您的应用程序将不需要在构建操作中触发转换,并且将像您希望的那样运行.


Oma*_*ani 15

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

我改变了这条线:

<compilation xdt:Transform="RemoveAttributes(debug)" />
Run Code Online (Sandbox Code Playgroud)

至 :

<compilation xdt:Transform="Replace" debug="false" targetFramework="4.5" />
Run Code Online (Sandbox Code Playgroud)

这基本上就是诀窍,因为我认为优化器正在寻找存在的调试值和=="false".

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

  • 只需注意,Replace将删除整个元素.当我使用这个时,我删除了包含的程序集列表,我开始收到以下错误."System.Object"类型在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用 (4认同)

小智 8

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

在Release转换中,替换行:

<compilation xdt:Transform="RemoveAttributes(debug)" />
Run Code Online (Sandbox Code Playgroud)

以下内容:

<compilation debug="false" xdt:Transform="SetAttributes" />
Run Code Online (Sandbox Code Playgroud)