Asp.Net MVC Bundle 不使用现有的 .min.js

Posted

技术标签:

【中文标题】Asp.Net MVC Bundle 不使用现有的 .min.js【英文标题】:Asp.Net MVC Bundle not using existing .min.js 【发布时间】:2012-09-10 19:02:48 【问题描述】:

我正在使用 Asp.Net MVC 4 和内置的捆绑支持。在 BundleConfig.cs 中,我在 RegisterBundles 方法中添加了默认的 jquery:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-version.js"));

我的项目中还包含jquery-1.8.0.jsjquery-1.8.0.min.js

调试时一切正常,但是当我设置 debug="false" 来测试捆绑时,它似乎正在缩小默认的 jquery 文件,而不是使用已经存在的缩小版本。当我在我的项目中查看 'min' 版本的 jquery 时,它在顶部包含一个小注释,第一个方法定义是 function(a,b)。当我在浏览器中查看输出时,注释丢失并且第一个方法定义不同。

有没有其他人看到过这个问题?如何让捆绑机制使用现有的 .min 文件而不是重新缩小?

【问题讨论】:

这个答案可能对你有帮助***.com/a/12901050/230390 【参考方案1】:

是否有您不希望重新优化文件的特定原因?它应该是安全的。目前没有办法选择性地禁用部分缩小,基本上所有文件都是先捆绑在一起的,然后再缩小整个捆绑包。

但是当 debug=false 时,它​​应该使用 jquery-1.8.0.min.js 文件而不是 jquery-1.8.0.js 文件。

【讨论】:

首先我试图了解捆绑是如何工作的,因为文档说将使用 .min 版本,但它看起来不是那样的。其次,当前的 Opera 版本有一个错误,会阻塞动态缩小的版本。 see here 由于您只是捆绑一个文件,并且它已经被缩小,您可以只创建一个普通的 Bundle 而不是 ScriptBundle,它永远不会缩小您的文件。【参考方案2】:

添加带有通配符的文件时,名称中带有 min 的文件将被排除,请尝试重命名名称中不带 min 的文件。

【讨论】:

【参考方案3】:

这可以通过在 web.config 中将属性 usePreMinifiedFiles 设置为 true 来设置

<core enableTracing="false" ...>
     <js defaultMinifier="EdwardsJsMinifier" usePreMinifiedFiles="true">

【讨论】:

谢谢!在我的版本中,BundleTransformer.Configuration.xsd usePreMinifiedFiles=true 是默认值,但我需要 false 值。 你能帮我解决我的问题吗***.com/questions/26925521/…

以上是关于Asp.Net MVC Bundle 不使用现有的 .min.js的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Web API 控制器添加到现有的 ASP.NET Core MVC?

csharp 在ASP.NET MVC中使用bundle

在ASP.NET MVC中,使用Bundle来打包压缩js和css(转)

如何将 Web API 添加到现有的 ASP.NET MVC (5) Web 应用程序项目中?

在ASP.NET MVC中,使用Bundle来打包压缩js和css

如何在 ASP.NET MVC 5 中实现自定义身份验证