Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net ScriptBundle在调试模式下添加完整文件和缩小文件_Asp.net_Asp.net Mvc 4_Bundling And Minification - Fatal编程技术网

Asp.net ScriptBundle在调试模式下添加完整文件和缩小文件

Asp.net ScriptBundle在调试模式下添加完整文件和缩小文件,asp.net,asp.net-mvc-4,bundling-and-minification,Asp.net,Asp.net Mvc 4,Bundling And Minification,我在BundleConfig.cs中定义了以下脚本包- public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/js/yepnope").Include( "~/Scripts/yepnope.{version

我在BundleConfig.cs中定义了以下脚本包-

    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">
这是一个MVC4项目,在Windows 7 Professional 64位上的Visual Studio 2012中运行

无论我做什么,我都无法使{version}通配符按照-

注意:除非EnableOptimizations为true或 Web.config文件中的编译元素设置为false,files 不会被捆绑或缩小。此外,的.min版本 将不使用文件,将选择完整调试版本

对于ASP.NET MVC 4,这意味着在调试配置中 jquery-1.7.1.js将被添加到包中。释放 配置,将添加jquery-1.7.1.min.js。捆绑 框架遵循以下几种常见约定:

  • 在“FileX.min.js”和“FileX.js”时选择要发布的“.min”文件 存在
  • 选择非“.min”版本进行调试
  • 忽略“-vsdoc” 文件(如jquery-1.7.1-vsdoc.js),仅由 智能感知
上面显示的{version}通配符匹配用于 使用适当版本的自动创建jQuery捆绑包 脚本文件夹中的jQuery。在本例中,使用通配符 提供以下好处:

  • 允许您使用NuGet更新到较新的jQuery版本,而无需 在视图中更改前面的绑定代码或jQuery引用 页数
  • 自动选择调试配置的完整版本 以及发布版本的“.min”版本。
如果我添加“EnableOptimizations”,它的行为似乎与预期的一样


其他人是否注意到了这一点或找到了解决方案?

MVC4只知道如何处理
.min.js
文件。它无法识别
-min.js
(带破折号)

我通常这样做的方法很容易成功,就是去掉由库提供的
.js
-min.js
文件,这些库既提供
.js
,也提供
.min.js
-min.js
。默认情况下,MVC将在您部署网站时自动缩小任何捆绑的
.js
文件,因此无需使用提供的
.min.js
-min.js
文件


这不一定是对您的特定问题的直接回答-这是一种完全回避问题的方法。

在不使用debug属性的情况下发布也会导致它从完整的.js文件生成一个单一的缩小版本-缩小的变量名与提供的缩小版本中的变量名不同。您可以可能意味着该文件名为
.min.js
,而不是
-min.js
@MikeSmithDev,它可能名为
-min.js
。在MVC4中使用NuGet软件包是一个常见的问题:您抓取一个软件包,它附带一个
.js
和一个
-min.js
.min.js
。如果你得到一个
.min.js
文件,一切都应该正常。但是如果你得到一个
-min.js
文件,它只会引起问题。最好完全去掉它,就像我的回答一样。@Timothyshiels删除它是可行的,但是遵循文档并使用“.min.js”文件也是可行的,在快速测试中,使用“.min”优化的文件比不存在时更小,因此,我主张重命名该文件并按设计使用优化。@MikeSmithDev如果默认的迷你器比用于创建打包的
min.js
的其他迷你器效率低,您可以将迷你器切换为该迷你器。。。
<script src="/Scripts/yepnope.1.5.4-min.js"></script>
<script src="/Scripts/yepnope.1.5.4.js"></script>
@section HeadScripts
{
    @Scripts.Render("~/js/yepnope")
}