ASP.NET 脚本捆绑包中的 MVC {version} 通配符选择调试版本

ASP.NET MVC {version} wildcard in script bundle selects debug version?

本文关键字:version 通配符 选择 版本 调试 MVC 脚本 NET 包中 ASP      更新时间:2023-09-26

我正在尝试使用从NuGet导入的Knockout.js,其中包括knockout-3.2.0.jsknockout-3.2.0.debug.js。我添加了一个新的捆绑包,例如

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

但是,当我检查网页时,事实证明加载的捆绑包knockout-3.2.0.debug.js.

我读了以下问题

  1. 什么是 ScriptBundle("~/scripts/jquery-{version}.js") 中的 {version}
  2. MVC4 捆绑包中的 {版本} 通配符

这似乎对回答我的问题没有特别帮助。

在Visual Studio

中,你可以有多个解决方案配置(它是Visual Studio主菜单下按钮变量中的一个下拉列表,默认情况下在标准栏中)。默认情况下,创建新项目(或解决方案)时,有 2 个可用配置:"调试"和"发布"。(您也可以在构建>配置管理器中访问此功能...菜单)。

在生成解决方案或 porject(或发布解决方案)时,必须选择以下配置之一:

  • 如果选择"调试",则使用调试信息编译项目,以便可以将其附加到 VS 调试器并将运行的代码与源文件关联。此外,还会发生一些其他事情,例如,捆绑器将使用JS文件的调试版本,而不是生成缩小的捆绑包。这背后的想法是,如果您使用此配置,那是因为您想要调试代码。

  • 如果选择"发布",则编译项目时不带调试信息。捆绑包使用脚本的普通或缩小版本,并且每个完整的捆绑包都转换为单个缩小文件

因此,您需要做的是选择正确的配置。考虑到这会影响 js 捆绑和程序集的创建。有时,程序集中的代码甚至可以具有更好的性能,因为发布版本将具有一些优化,这些优化在程序集的调试版本中应用,以允许对其进行调试。

这是因为脚本文件夹中存在JS的调试版本。

如果您查看其他 js,则不存在调试文件,因此它将使用 jquery.1.7.0.js,但如果您复制粘贴 jquery.1.7.0.debug.js那么它将选择它。

如果你想使用KNOCKOUT-3.2.0.js,那么删除js的调试版本。

你也可以去web.config

 <system.web>
    <compilation debug="false" targetFramework="4.0" />
    // set debug="true" or debug="false" 

如果设置了 debug=true,则选择调试版本,或者如果调试为 false,则选择另一个版本的 JS。