【问题标题】:MVC Bundle {version} when old file still exists in directory目录中仍存在旧文件时的 MVC Bundle {version}
【发布时间】:2013-09-17 08:44:19
【问题描述】:

在 MVC 4 中,使用Bundles 定义要包含的文件,可以使用{version} 通配符,例如...

"~/Scripts/jquery-{version}.js"

当您在文件夹中有一个版本时,这很有效,例如jquery-1.7.js。但是,当我们在文件夹jquery-1.7.jsjquery-1.9.js 中有两个版本时,它似乎选择了旧版本,而忽略了新版本。

{version} 通配符是否找到第一个实例,然后继续?如果是这样,则此示例中的第一个实例似乎是旧版本(因为 1.7 在 1.9 之前出现)。那么,如果我们有两个文件,有没有办法强制它查找最新版本?

注意:以上版本号可能不准确,仅供参考。

【问题讨论】:

  • 这里已经讨论了一些信息:stackoverflow.com/questions/12029161/…
  • 它并没有真正回答这个问题,我们可以强制它获取最新版本吗?如果答案是确保你的脚本目录只有你想要的版本使用,那很好,但我只是想与可能遇到相同问题的其他人核实。
  • 其他讨论中的这条评论应该足够清楚:“它是 [{version} 是] 一个正则表达式,因此它将包含所有匹配项,因此如果您在同一目录中有多个版本,您可能不会想用这个。”如果这是真的,那么我猜这两个版本都包含在内,而最后一个加载的版本是覆盖/修改之前加载的代码。您可以通过在 web.config 中使用 debug="true" 运行并查看从页面输出的 html 来验证这一点。
  • @JeremyCook,您可以使用 firebug / chrome 工具查看已加载的内容 - 我可以验证是否正在加载旧的。我只是想知道我们是否可以强制它加载最新版本。
  • 您可以使用 IBundleOrderer ala stackoverflow.com/questions/14563415/… 我自己没用过。就个人而言,我会考虑手动指定脚本或将旧脚本放在单独的文件夹中。

标签: asp.net-mvc asp.net-mvc-4 bundle


【解决方案1】:

在 Mvc 中。它将首先加载旧版本,然后加载最新版本。以下将是 jquery 文件加载的顺序。 1.jquery-1.7.js 2.jquery-1.9.js

在这种情况下。最新文件将覆盖旧版本。所以你的页面总是能获得最新的 jquery 功能。

【讨论】:

    【解决方案2】:

    我们最终使用了类似于 this post 的东西,它解决了类似的问题。一旦完全实施,我将在接下来的几周内用完整的描述和代码更新答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 2012-06-12
      • 1970-01-01
      • 2017-06-19
      • 2012-08-15
      相关资源
      最近更新 更多