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

问题描述 投票:0回答:1

当我捆绑这样的脚本时:

    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。相反,它将BOTH捆绑在一起,这导致系统失败。

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

asp.net bundling-and-minification
1个回答
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。

© www.soinside.com 2019 - 2024. All rights reserved.