据我所知(因为坦率地说,关于System.Web.Optimization
的文档非常稀疏),捆绑在 ASP.NET 中的工作方式是注册一组文件(Javascript或CSS,对应于ScriptBundle
和StyleBundle
),并将它们与虚拟路径相关联;例如,~/bundles/jqueryui
所有jQuery UI脚本。 稍后,ASP.NET 可以在非调试模式下运行时缩小这些文件,并且缩小后的版本将在您为捆绑包指定的虚拟路径中可用。
默认捆绑包设置注册一些脚本包,其中~/bundles/...
作为虚拟路径,以及一些以~/Content/css
作为虚拟路径的 CSS。 我的问题是,这不是不一致吗? 拥有像~/bundles/js/...
和~/bundles/css/...
这样的东西不是更有意义吗? 事实上,~/Content
目录实际上作为一个真正的目录存在,所以甚至有可能发生名称冲突。 我本以为您希望虚拟捆绑包路径是默认情况下不存在的目录,并且不打算在实际文件系统上创建。~/Content/css
用于我不理解的 CSS 捆绑虚拟路径有什么原因吗?
很好的问题,短篇小说是,一般来说这根本不重要。但是,某些脚本文件和 CSS 依赖于它们在磁盘上的物理位置,因为它们使用相对路径来引用其他内容。例如,查看新 ASP.NET 4.5项目中的默认jQuery UI包,您会发现它有一个相当长的路径。这是因为jQuery的CSS对某些图像文件有相对引用。为了使这些正确解决,路径很重要,否则诸如".."之类的内容将不会进入正确的父目录。