我们最近将MVC项目升级到Visual Studio 2013和ASP.NET 4.5.1以及包含某些通配符的包:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.min.js"));
已停止正确编译。它似乎影响了在'.js'之前包含更多字符的任何通配符,通常为min。
我意识到捆绑的一部分是缩小,因此一些意见并不是必需的,但这是意图吗?我没有读到这是发行说明。要回去修复需要付出很多努力,因为有时候我们没有这些脚本的常规版本。我们正在经历其他外卡问题,但这似乎是最重要的问题。我还没有看到其他人发布此问题,所以我很想知道是否有其他人注意到它,或者是否是由于升级过程而遇到的配置问题。
答案 0 :(得分:1)
您根本不应在捆绑包定义中添加min
前缀。
捆绑框架遵循几个常见的约定,例如:
当“FileX.min.js”和“FileX.js”选择“.min”文件以供发布 存在。选择非“.min”版本进行调试。忽略“-vsdoc” 文件(例如jquery-1.7.1-vsdoc.js),仅供使用 智能感知。
确保在web.config中启用了优化:
<system.web>
<compilation debug="false" />
<!-- Lines removed for clarity. -->
</system.web>
或覆盖代码:
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
// Code removed for clarity.
BundleTable.EnableOptimizations = true;
}
和MVC将生成与minifed jquery文件的bundle链接,类似于:
<script src="/bundles/jquery?v=OCFAn1NcaUrZ5VLi0Kt8lefDjHOF7mvtdw-2FUpZjJ01"></script>
更新:
似乎这在早期版本中也不起作用。通过修改IgnoreList
的{{1}}来解决方法: