MVC4的样式捆绑不使用min文件

我有4个文件:

  • a.css
  • a.min.css
  • b.css
  • b.min.css

它们以下列方式添加到bundle中:

bundles.Add(new StyleBundle("~/Content/acss").Include("~/Content/a.css", "~/Content/b.css")); 

在调试中运行应用程序时,所有都正确呈现:

    

但是当在发行版中运行时,我会以下列方式呈现它:

   

我在里面创立:

/ *缩小失败。 返回未经授权的内容。 (24,708):运行时错误CSS1030:预期的标识符,找到’。’

所以我有两个问题:

  1. 为什么它不按照在线文档工作? 所有信息都说如果可用于发布版本,它会选择min文件?
  2. 如何根据文档使其工作?

我有完全相同的问题,我的解决方案包含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。

结果certificate这是我的问题的答案。 通过将我的ScriptBundleStyleBundle都设置为只输入Bundle ,我现在可以在没有最小化的情况下获得正确的捆绑。

在调试中,我的所有常规css / jss文件都是单独加载的。 当我将其设置为非调试时,所有内容都捆绑在一起,它会自动选择所有.min文件。

你的实际问题是不负责任的,因为它已经作为文档状态(这就是为什么我问你在看什么文档,但你选择忽略我的评论)。

如果要在发布模式下保持相同的行为,请使用BundleTable.EnableOptimizations = false; 在你的Global.asax 。 这将关闭仅在调试模式下处于活动状态的捆绑和缩小。 然后使用您自己的缩小的css / js文件,只需将您的包路径指向缩小版本。

根据文档,您还可以使用"~/Content/a{version}.css" ,它将在调试模式下使用非缩小版本,并使用缩小版本进行发布。 但是,我没试过。

您是否看过Bundle Transformer ,它的1.6.5版本引入了一个名为usePreMinifiedFiles的属性,该属性启用/禁用预先缩小文件的使用。

你有没有设置BundleTable.EnableOptimizations = true;

从文档中

注意:除非EnableOptimizations为true或Web.config文件中的编译元素中的debug属性设置为false,否则不会捆绑或缩小文件。 此外,将不使用.min版本的文件,将选择完整的调试版本。 EnableOptimizations会覆盖Web.config文件中编译元素中的debug属性