【问题标题】:Why does ASP.Net bundling include multiple versions of matching files? Can I stop this?为什么 ASP.Net 捆绑包含多个版本的匹配文件?我能阻止这一切吗?
【发布时间】:2017-12-19 17:58:24
【问题描述】:

当我像这样捆绑脚本时:

    bundles.Add(new ScriptBundle("~/bundles/Product/Details").Include(
        "~/Scripts/external/XXXXConfig-{version}.js",
        "~/Scripts/external/Views/Product/ProductFavorite-{version}.js"));

我的期望是,如果该目录中有两个文件:

  1. XXXXConfig-1.0.0.js
  2. XXXXConfig-1.0.1.js

它只包含最新版本,即 XXXXConfig-1.0.1.js。相反,它将两者捆绑在一起,这会导致系统严重失败。

我的期望来自here 和其他来源。这种期望是错误的吗?无论如何,有没有办法让它只包含最新版本?

【问题讨论】:

    标签: asp.net bundling-and-minification


    【解决方案1】:

    是的,您的期望不正确。 {version} 通配符用作任何版本的占位符,而不是最新版本。它允许它更新您的 NuGet 包,而无需每次都更改您的捆绑代码。

    {version} 通配符做的唯一聪明的事情是它选择带有min(如果存在)的文件用于发布,而没有min 用于调试。除此之外,它只是一个通配符。

    我不知道有任何内置功能可以为您选择最新版本。如果你愿意,你必须自己编程。你可以搜索看看是否有人已经做过这样的事情。但我想知道为什么您希望文件夹中存在多个版本。

    编辑:根据您的要求详细说明min 功能,我认为MSDN that you linked to 描述得很好,但这里是一个示例:

    假设您的文件夹有两个文件 SEMSConfig-1.0.0.js 和 SEMSConfig-1.0.0.min.js。当您在调试模式下运行项目时,将使用文件 SEMSConfig-1.0.0.js。当您以发布模式运行项目(或发布)时,将使用文件 SEMSConfig-1.0.0.min.js。

    【讨论】:

    • 您能详细说明“最小”方法吗?
    • 但它会缩小 XXXConfig-1.0.0.js 和 XXXConfig-1.0.1.js,不是吗?
    • 很可能是的。
    • 在此处查看更多信息 - c-sharpcorner.com/article/… - 关于“分钟” - 不幸的是,该文章还谈到了“使用文件夹中的最新版本”,这是错误的,似乎包括了它发现的所有内容,这是一个问题例如,如果您将 WebPublish 设置为不删除旧文件
    猜你喜欢
    • 2013-07-16
    • 1970-01-01
    • 2016-12-21
    • 2012-10-28
    • 2020-03-25
    • 2023-04-09
    • 2019-06-05
    • 2020-05-03
    • 2012-08-09
    相关资源
    最近更新 更多