MVC4 Bundle中的{version}通配符

Ric*_*olo 153 c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-optimization

在MVC 4中,我们有捆绑.在定义包时,我们可以使用*等通配符来处理文件夹中的所有文件.

在下面的例子中是什么-{version}意思?

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js"));
}
Run Code Online (Sandbox Code Playgroud)

Hao*_*ung 176

-{version}基本映射到一个版本的正则表达式,或者更确切地说:(\d+(?:\.\d+){1,3}).
使用*往往会占用太多,例如,如果你捆绑jquery*,那将包括jquery-ui可能会搞砸订购.但是使用jquery-{version}.js可以避免每次升级jquery时都必须更新bundle定义.

其他注意事项:

  • {version} 仅适用于路径的最后部分 - 基本上是文件名 - 而不是目录.
  • 同一文件夹中的多个版本的jquery都将被捕获.

  • 它是一个正则表达式,所以它将包括所有匹配,所以如果你在同一个目录中有多个版本,你可能不想使用它. (18认同)
  • 投票不在目录中工作.任何让它在目录中工作的解决方案? (4认同)
  • 请注意,{version}似乎不适用于路径.在工作中,我们在路径中有引导版本(不在文件名中),所以我试图这样做:"〜/ Content/Libraries/bootstrap/{version} /css/bootstrap.css"但是当我运行时RegisterBundles,我收到一个说"目录不存在"的ArgumentException. (3认同)
  • 编辑:没关系,他们在这里清楚地解释一下!http://www.asp.net/mvc/overview/performance/bundling-and-minification谢谢! (3认同)
  • 文件夹中存在的多个ex:jquery版本将如何工作? (2认同)

MUG*_*G4N 12

此捆绑包能够容纳脚本名称中的版本号.因此,将jQuery更新为应用程序中的新版本(通过NuGet或手动)不需要任何代码/标记更改.

有关捆绑的更多信息,请参阅以下链接:http://weblogs.asp.net/jgalloway/archive/2012/08/16/asp-net-4-5-asp-net-mvc-4-asp-net-网页页面-2和视觉工作室2012年的Web开发者,features.aspx

  • 只要您确保实际删除旧版本. (3认同)