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

时间:2014-11-26 03:34:12

标签: javascript asp.net-mvc asp.net-mvc-4 knockout.js

我正在尝试使用从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. what is {version} in ScriptBundle("~/scripts/jquery-{version}.js")
  2. {version} wildcard in MVC4 Bundle
  3. 在回答我的问题时似乎没有特别的帮助。

2 个答案:

答案 0 :(得分:2)

这是因为你在脚本文件夹中有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,则选择调试版本,或者如果debug为false,则选择其他版本的js。

答案 1 :(得分:2)

在Visual Studio中,您可以拥有多个解决方案配置(它是Visual Studio主菜单下的按钮变量中的下拉列表,默认情况下位于标准栏中)。默认情况下,在创建新项目(或解决方案)时,您有2个可用配置:Debug和Release。 (您也可以在Build&gt; Configuration Manager ...菜单中访问它。)

在构建解决方案或项目时(或在发布时),您必须选择以下配置之一:

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

  • 如果选择Release,则编译项目时不会显示调试信息。捆绑包使用脚本的正常版本或缩小版本,并且每个整个捆绑包都在一个缩小的文件中转换

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