当前位置: 首页 > 编程语言 > C#

没有最小文件共享的MVC4样式包

时间:2023-04-10 13:48:05 C#

没有最小文件的MVC4样式包我有4个文件:它们按以下方式添加到包中:bundles.Add(newStyleBundle("~/Content/acss").Include("~/Content/a.css","~/Content/b.css"));在debug中运行应用程序时,所有渲染都正确:但是在release中运行时,我将按以下方式渲染它:Icreatedinside:/*Minificationfailed。返回未经授权的内容。(24,708):运行时错误CSS1030:预期标识符,找到'.’所以我有两个问题:为什么它不能根据在线文档工作?所有信息都说它会选择min文件(如果它可用于发布版本)?如何根据文档使其工作?我遇到了完全相同的问题,我的解决方案包含css/js文件及其使用WebEssentials最小化的.min文件。如果我在调试模式下使用捆绑包,一切正常,并且所有单独的非缩小文件都加载到我的应用程序中。但是如果我设置BundleTable.EnableOptimizations=true;然后我得到错误,因为它最小化了我的文件。基于http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification,其中指出:对于ASP.NETMVC4,这意味着使用调试配置文件jquery-1.7.1。js将被添加到包中。在发布配置中,将添加jquery-1.7.1.min.js。捆绑框架遵循几个常见的约定,例如:当“FileX.min.js”和“FileX.js”存在时,选择“.min”文件进行发布。选择非“.min”版本进行调试。我希望它只加载我最小化的文件,然后将它们捆绑在一起。我认为隐含但在文档中缺失的是,它还会再次最小化我已经最小化的文件,这些文件无效并导致输出错误。我找到了http://aspnetoptimization.codeplex.com/workitem/56,其中提到:您可以简单地通过创建不带转换的包来跳过缩小,即不创建ScriptBundle,只是普通的包。原来这就是我的问题的答案。通过将我的ScriptBundle和StyleBundle都设置为只键入Bundle,我现在可以在不最小化的情况下获得正确的包。在调试中,我所有的常规css/jss文件都是单独加载的。当我将它设置为非调试时,一切都被捆绑,它会自动选择所有.min文件。你的实际问题是不负责任的,因为它已经是文档状态(这就是为什么我问你正在看什么文档,但你选择忽略我的评论)。如果您想在发布模式下保持相同的行为,请使用BundleTable.EnableOptimizations=false;在你的Global.asax中。这将关闭仅在调试模式下有效的捆绑和缩小。然后使用你自己的缩小css/js文件,只需将你的包路径指向缩小版本。根据文档,您还可以使用“~/Content/a{version}.css”,它将在调试模式下使用非缩小版本,在发布时使用缩小版本。但是,我还没有尝试过。你看过BundleTransformer了吗,它的1.6.5版引入了一个名为usePreMinifiedFiles的属性,它可以启用/禁用预缩小文件的使用。你设置BundleTable.EnableOptimizations=true;来自文档注意:除非EnableOptimizations为真或Web.config文件中编译元素中的调试属性设置为假,否则文件不会被捆绑或缩小。此外,将不使用文件的.min版本,将选择完整的调试版本。