我有4个文件:
以下列方式将它们添加到包中:
bundles.Add(new StyleBundle("~/Content/acss").Include("~/Content/a.css", "~/Content/b.css"));
在调试中运行应用程序时,所有内容都正确呈现:
<link href="/Content/a.css" rel="stylesheet"/>
<link href="/Content/b.css" rel="stylesheet"/>
然而,当在发行版中运行时,我按以下方式呈现它:
<link href="/Content/acss?v=mUdXE7_fXKjICzE_XteIB1Igy6TekX1QFh-BtY6fFUw1" rel="stylesheet"/>
在我的创立内部:
/ *缩小失败。返回未经授权的内容。 (24,708):运行时错误CSS1030:预期的标识符,找到'。'
所以我有两个问题:
答案 0 :(得分:35)
我遇到了完全相同的问题,我的解决方案包含css / js文件以及我们使用Web Essentials最小化的.min文件。
如果我在调试模式下使用了捆绑包,一切都会正常工作,并且所有单独的非最小化文件都将加载到我的应用程序中。但是,如果我设置BundleTable.EnableOptimizations = true;
,那么我会收到错误,因为它最大限度地减少了我的文件。
基于http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification,其中声明:
对于ASP.NET MVC 4,这意味着使用调试配置文件 jquery-1.7.1.js将被添加到包中。在一个版本中 配置,将添加jquery-1.7.1.min.js。捆绑 框架遵循几个常见的约定,例如:
当“FileX.min.js”和“FileX.js”选择“.min”文件以供发布 存在。选择非“.min”版本进行调试。
我希望它只是加载我已经最小化的文件并将它们捆绑起来。我认为隐含的,但文档中缺少的是,它还将再次最小化我已经最小化的文件,这些文件无效并导致输出错误。
我发现http://aspnetoptimization.codeplex.com/workitem/56提及:
只需创建没有的捆绑包,就可以跳过缩小 转换,即不创建ScriptBundles,只是普通的Bundles。
结果证明这是我的问题的答案。通过将我的ScriptBundle
和StyleBundle
都设置为只输入Bundle
,我现在可以在没有最小化的情况下获得正确的捆绑。
在调试中,我的所有常规css / jss文件都是单独加载的。当我将其设置为非调试时,所有内容都捆绑在一起,它会自动选择所有.min文件。
答案 1 :(得分:1)
您的实际问题无法回答,因为它已经作为文档状态(这就是为什么我询问您正在查看哪些文档,但您选择忽略我的评论)。
如果您想在发布模式下保持相同的行为,请在BundleTable.EnableOptimizations = false;
中使用Global.asax
。这将关闭仅在调试模式下处于活动状态的捆绑和缩小。然后使用您自己的缩小的css / js文件,只需将您的包路径指向缩小版本。
根据文档,您还可以使用"~/Content/a{version}.css"
,它将在调试模式下使用非缩小版本,并使用缩小版本进行发布。但是,我没有尝试过。
答案 2 :(得分:0)
你看了Bundle Transformer,1.6.5 version引入了一个名为 usePreMinifiedFiles 的属性,它启用/禁用了预先缩小文件的使用。
您是否设置了BundleTable.EnableOptimizations = true;
注意:除非EnableOptimizations为true或者调试属性为 编译Web.config文件中的元素设置为false,文件 不会被捆绑或缩小。另外,.min版本 不会使用文件,将选择完整的调试版本。 EnableOptimizations会覆盖编译中的debug属性 Web.config文件中的元素