捆绑通配符不再适用于Visual Studio 2013 / ASP.NET 4.5.1

时间:2013-10-23 15:45:36

标签: visual-studio-2013 asp.net-mvc-5

我们最近将MVC项目升级到Visual Studio 2013和ASP.NET 4.5.1以及包含某些通配符的包:

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

已停止正确编译。它似乎影响了在'.js'之前包含更多字符的任何通配符,通常为min。

我意识到捆绑的一部分是缩小,因此一些意见并不是必需的,但这是意图吗?我没有读到这是发行说明。要回去修复需要付出很多努力,因为有时候我们没有这些脚本的常规版本。我们正在经历其他外卡问题,但这似乎是最重要的问题。我还没有看到其他人发布此问题,所以我很想知道是否有其他人注意到它,或者是否是由于升级过程而遇到的配置问题。

1 个答案:

答案 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}}来解决方法:

https://stackoverflow.com/a/12005272/186822