【问题标题】:How to include a file multiple times in an ASP.NET MVC5 script bundle?如何在 ASP.NET MVC5 脚本包中多次包含一个文件?
【发布时间】:2015-06-03 13:52:07
【问题描述】:

在 ASP.NET 缩小和捆绑功能中,我有一个脚本可以清理某些内容,并且必须在加载多个独立文件后运行。

所以我创建了一个包,

new ScriptBundle(virtualPath, cdnPath).Include(
    "~/Scripts/a.js",
    "~/Scripts/cleanup.js",
    "~/Scripts/b.js",
    "~/Scripts/cleanup.js",
    "~/Scripts/c.js",
    "~/Scripts/cleanup.js",
    "~/Scripts/d.js",
    "~/Scripts/cleanup.js",
);

稍后我使用<script defer="defer" src="{0}"></script> 格式渲染它,期望在每个脚本的代码之后,在调试和发布模式下都会按预期进行清​​理。然而 ASP.NET Bundling 去除了对同一文件路径的重复调用,因此输出为

<script defer="defer" src="/Scripts/a.js"></script>
<script defer="defer" src="/Scripts/cleanup.js"></script>
<script defer="defer" src="/Scripts/b.js"></script>
<script defer="defer" src="/Scripts/c.js"></script>
<script defer="defer" src="/Scripts/d.js"></script>

在调试模式下,而我的预期,

<script defer="defer" src="/Scripts/a.js"></script>
<script defer="defer" src="/Scripts/cleanup.js"></script>
<script defer="defer" src="/Scripts/b.js"></script>
<script defer="defer" src="/Scripts/cleanup.js"></script>
<script defer="defer" src="/Scripts/c.js"></script>
<script defer="defer" src="/Scripts/cleanup.js"></script>
<script defer="defer" src="/Scripts/d.js"></script>
<script defer="defer" src="/Scripts/cleanup.js"></script>

这也告诉我该文件将在捆绑版本中被遗漏,这不是我想要的。

【问题讨论】:

  • 如果清理需要运行多次,那么 a,b,c,d 等就不能在完成后调用清理代码吗?
  • a、b、c 和 d.js 文件是在项目构建时由第三方工具自动生成的,无法入侵。这就是问题所在。
  • 您可以做的一件事是为a.js, cleanup.jsb.js, cleanup.js 等创建单独的包。有点烦人,但可以。
  • 这将导致多个脚本包被渲染,这是我想避免的。

标签: asp.net asp.net-mvc-5 bundling-and-minification asp.net-bundling


【解决方案1】:

在 bundleConfig.cs 中使用以下行:

BundleTable.EnableOptimizations = true;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    相关资源
    最近更新 更多