为什么ASP.Net捆绑包含多个版本的匹配文件?我可以阻止这个吗?

时间:2017-12-19 17:58:25

标签: asp.net bundling-and-minification

当我捆绑这样的脚本时:

    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
  3. 它只包含最新版本,即XXXXConfig-1.0.1.js。相反,它将BOTH捆绑在一起,这会导致系统失败。

    我的期望来自here和其他来源。这种期望是错的吗?在任何情况下,有没有办法使它只包含最新版本?

1 个答案:

答案 0 :(得分: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。