在ASP.NET MVC中定义一些包时,对{version}感到困惑

时间:2015-02-25 13:55:16

标签: c# asp.net-mvc bundles

目前我正在测试捆绑包,我知道可以使用{version}*等通配符。我不完全确定{version}的用途。我假设*的工作方式类似于正则表达式,它会将所有可能性与所有可能性相匹配:jquery*表示jqueryAjquery-ui.js等所有内容。我希望有可能选择我的javascript库,css文件等的开发者或生产版本。下面是文件结构:

Content\
        css\
            bootstrap-theme.css
            bootstrap-theme-min.css
            bootstrap.css
            bootstrap.min.css

the same with Scripts:

Scripts\
        jquery-2.1.3.js
        jquery-2.1.3.min.js
        jquery-ui.js
        jquery-ui.min.js

我已经定义了以下捆绑包但我觉得{version}在字符串中的所有或错误位置都是错的:

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

bundles.Add(new StyleBundle("~/bundles/css/Bootstrap").Include("~/Content/css/bootstrap-theme{version}.css"));
bundles.Add(new StyleBundle("~/bundles/css/Bootstrap").Include("~/Content/css/bootstrap{version}.css"));
bundles.Add(new StyleBundle("~/bundles/css").Include("~/Content/StyleSheet.css"));

如何在发布版本的应用程序中指示ASP.NET替换实例bootstrap.css而不是bootstrap.min.css

谢谢!

1 个答案:

答案 0 :(得分:5)

{version}有点像通配符,但它做了两件额外的事情,它将通配符限制为看起来像版本号的东西(例如" 1.2.3")和它使用它找到的最高版本。这允许您拥有相同脚本的多个版本,并且捆绑器将始终使用最新版本。

例如,如果您有以下内容:

Scripts\
+ jquery-1.10.1.js
+ jquery-1.10.2.js
+ jquery-2.0.0.js

脚本包如:

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

然后,~/Scripts/jquery-2.0.0.js将被添加到捆绑包中。