我有这个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
简而言之,我无法通过在发布模式下运行应用程序来实现捆绑和缩小工作。
答案 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.release.config
已应用于web.base.config
,因此
compilation xdt:Transform="RemoveAttributes(debug)"
用于web.release.config
文件中,web.config在调试时已删除了debug属性,并且在部署时使用web.release.config
再次进行转换,尝试应用上述命令,但失败。