【问题标题】:MVC4 Bundling Wildcards - * vs. {version}MVC4 捆绑通配符 - * 与 {version}
【发布时间】:2012-10-11 15:47:16
【问题描述】:

我理解并完全感谢新的捆绑通配符 {version} 正则表达式,因为即使在更新等之后,它也会继续获取您的脚本和样式库。问题是我无法让它有效地工作。

我以前使用以下符号来获取我的 jQuery 脚本:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
            "~/Scripts/jquery-1.*"));

它会拾取与星号通配符匹配的所有文件。

但是当我尝试以下操作时:

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

我注意到 jQuery 文件没有写入 _Layout.cshtml 页面。

注意 - 我确实在这两个示例中使用了以下 HTML 代码:

@Scripts.Render("~/bundles/jquery")

当我使用上面的第一个示例(“ * ”)表示法时,以下内容将写入页面:

<script src="/Scripts/jquery-1.7.2.js" type="text/javascript"></script>

但是,当我使用“{version}”表示法时,应该写入库的地方只是一个空白空间。这既适用于 jquery 文件,也适用于相关的 CSS 样式表。

无论我是为 DEBUG 还是 RELEASE 模式编译都没有关系。结果是一样的。显然,在发布模式下,我会在使用“*”符号时获得优化版本:

<script src="/bundles/jquery?v=VUv2YOeuOgHad-FHZ-vGMDu9wN1j9VZGifI1SBUUSMs1" type="text/javascript"></script>

因此,作为所有开发人员的完美主义者,我非常希望看到 {version} 符号对我有用,因为我会及时了解新版本并希望对我的部署进行这种控制。

非常感谢您对我可能做错的任何见解。

提前致谢, 丹

【问题讨论】:

  • 您在哪个版本的 .Net 下运行该项目?我认为 .net 4.5 的 {version} 关键字存在限制。
  • 嗨,John,我确实在使用 .Net 4.5 框架,也许这就是一些问题的来源。我认为它现在已经运行了足够长的时间,尽管我没有检查,因为 * 符号有效并允许我继续前进。
  • 您在解决方案中是否同时拥有 .min.js 和 .js 版本的 jQuery 文件?在以前的 Web 优化版本中,假设在发布模式下使用 .min 文件,在调试中使用不带 .min 的文件,即使该文件不存在。此行为已在更高版本中更改。见aspnetoptimization.codeplex.com/workitem/32。我不确定这是否是您的问题,因为您引用的文件名中没有 .min。

标签: asp.net-mvc asp.net-optimization bundling-and-minification


【解决方案1】:

尝试更新 Microsoft.AspNet.Web.Optimization 和相关的 NuGet 包:Microsoft.Web.Infrastructure、WebGrease、Antlr。不仅要检查“nuget.org”选项卡,还要检查“全部”。

【讨论】:

    猜你喜欢
    • 2012-10-03
    • 2012-08-15
    • 2013-04-02
    • 2012-09-24
    • 2012-09-16
    • 2012-06-21
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多