0

在ASP.NET缩小和绑定功能中,我有一个清理某些内容的脚本,必须在加载多个独立文件后运行。如何在ASP.NET MVC5脚本包中多次包含文件?

所以我创建了一个包,

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捆绑条相同的文件路径的重复调用,因此输出

<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> 

这也告诉我,该文件将保留在捆绑版本中,这不是我想要的。下面一行

+0

如果清理需要多次运行则不能A,B,C,d等,只需调用清理代码,他们完成的时候? – Shoe

+0

a,b,c和d.js文件在项目构建时由第三方工具自动生成,该工具不能被黑客入侵。这是问题的原因。 – artfuldev

+0

你可以做的一件事是为'a.js,cleanup.js','b.js,cleanup.js'等创建单独的捆绑包。有点烦恼,但会工作。 – Shoe

回答

0

使用在bundleConfig.cs:

BundleTable.EnableOptimizations = true;