我在 BundleConfig.cs 中定义了以下 ScriptBundle-
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/js/yepnope").Include(
"~/Scripts/yepnope.{version}.js"));
}
}
它实际上并不是唯一的捆绑包,但这就是与问题相关的全部内容 - 其余的只是其他捆绑包定义。
当处于 web.config 中设置的“调试”模式时-
<compilation debug="true" targetFramework="4.5">
脚本的完整版本和缩小版本都发送到浏览器 -
<script src="/Scripts/yepnope.1.5.4-min.js"></script>
<script src="/Scripts/yepnope.1.5.4.js"></script>
该脚本是使用 HTML 助手添加的,如下所示 -
@section HeadScripts
{
@Scripts.Render("~/js/yepnope")
}
这是在 Windows 7 Professional 64 位的 Visual Studio 2012 中运行的 MVC4 项目。
无论我做什么,我都无法让 {version} 通配符按照Microsoft 文档中的描述运行-
注意:除非 EnableOptimizations 为 true 或 Web.config 文件中的编译元素中的 debug 属性设置为 false,否则不会捆绑或缩小文件。此外,不会使用 .min 版本的文件, 将选择完整的调试版本。
对于 ASP.NET MVC 4,这意味着使用调试配置,文件 jquery-1.7.1.js 将被添加到包中。在发布配置中,将添加 jquery-1.7.1.min.js。捆绑框架遵循几个常见的约定,例如:
- 当“FileX.min.js”和“FileX.js”存在时选择“.min”文件发布。
- 选择非“.min”版本进行调试。
- 忽略仅由 IntelliSense 使用的“-vsdoc”文件(例如 jquery-1.7.1-vsdoc.js)。
上面显示的 {version} 通配符匹配用于在您的 Scripts 文件夹中使用适当版本的 jQuery 自动创建 jQuery 包。在此示例中,使用通配符可带来以下好处:
- 允许您使用 NuGet 更新到较新的 jQuery 版本,而无需更改前面的捆绑代码或视图页面中的 jQuery 引用。
- 自动为调试配置选择完整版本,为发布版本选择“.min”版本。
如果我添加“EnableOptimizations”,它的行为似乎符合预期。
有没有其他人注意到这一点或找到解决方案?