我的解决方案由几个共享相同静态内容的 Web 应用程序组成。
我最近一直在使用 Microsoft ASP.NET 优化框架来捆绑这些文件。
问题是我只有一个 Global.asax 文件,我在其中注册了所有捆绑包,例如:
var jqueryBundle = new ScriptBundle("~/Scripts/jquery");
jqueryBundle.Include(new string[] {
"~/static/js/jQuery/jquery-1.11.2.js",
"~/static/js/jQuery/jquery-ui.js"});
然后在我的母版页上,我有:
<asp:PlaceHolder ID="phBundle" runat="server">
<%: System.Web.Optimization.Scripts.Render("~/Scripts/jquery") %>
</asp:PlaceHolder>
要在任何其他应用程序上引用此文件,我必须使用完整路径:
<%: System.Web.Optimization.Scripts.Render("/websites/MainApp/Scripts/jquery") %>
这样做的问题是,在调试模式下运行时,第二个应用程序静态文件显示为包,而不是单个/分隔文件。
此外,在发布模式下运行时,文件在没有哈希的情况下被提取(这意味着如果它们被缓存,它们将不会被更新)
我想通过在每个项目之间复制所有静态文件并在 Global.asax 中单独注册它们来解决这个问题(目前只有主应用程序有 Global.asax)