在 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",
);
后来我使用 format 渲染它<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>
这也告诉我该文件将在捆绑版本中被遗漏,这不是我想要的。