2013-02-19 32 views
17

最近,我的本地项目副本完全失去了大部分的样式。花了我一段时间才弄明白,因为大部分的样式都是在一个文件中完成的,其余的都是像Kendo和jQuery UI这样的小事情。ASP.Net MVC风格包不包括大多数文件

另一个,小东西没有被添加到页面。我认为这些样式已经被另一个开发人员修改过(有一段时间没有触及这个项目),他只测试Web API的东西,而不是UI,所以他可能破坏了它并且从未知道,但我追踪了这个问题:该软件包中只包含site.css文件,而其他文件不包含该文件。我甚至尝试重新安排捆绑包中包含的CSS文件的顺序,它只包含site.css

我重建了项目,清除了缓存等,所以肯定会看到变化。我记得最近更新了一些NuGet软件包或VS软件包 - 甚至可能是MVC软件包?

我的问题是:做了这件事情发生了什么变化?这是什么造成的?

编辑:代码从BundleConfig.cs

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.Add(new StyleBundle("~/Content/css").Include(
      "~/Content/site.css", 
      "~/Content/themes/kendo/kendo.common.min.css", 
      "~/Content/themes/kendo/kendo.default.min.css", 
      "~/Content/themes/base/minified/jquery.ui.core.min.css", 
      "~/Content/themes/base/minified/jquery.ui.resizable.min.css", 
      "~/Content/themes/base/minified/jquery.ui.selectable.min.css", 
      "~/Content/themes/base/minified/jquery.ui.accordion.min.css", 
      "~/Content/themes/base/minified/jquery.ui.autocomplete.min.css", 
      "~/Content/themes/base/minified/jquery.ui.button.min.css", 
      "~/Content/themes/base/minified/jquery.ui.dialog.min.css", 
      "~/Content/themes/base/minified/jquery.ui.slider.min.css", 
      "~/Content/themes/base/minified/jquery.ui.tabs.min.css", 
      "~/Content/themes/base/minified/jquery.ui.datepicker.min.css", 
      "~/Content/themes/base/minified/jquery.ui.progressbar.min.css", 
      "~/Content/themes/base/minified/jquery.ui.theme.min.css")); 
} 

_Layout.cshtml代码:

@Styles.Render("~/Content/themes/base/css", "~/Content/css") 
+0

请您发布您的捆绑代码。 – ngm 2013-02-19 20:32:12

+0

已更新,代码为@ngm。 – vbullinger 2013-02-19 21:23:56

+0

现在不是这个有趣的:超过1000个意见和零分的问题... – vbullinger 2013-06-12 22:17:38

回答

54

默认情况下,文件在 “.min.css” 将只包括结尾的名称在版本 builds。

推荐的包构造是仅包括非精缩的CSS和在的Web.config在释放.js文件,则.min版本将被自动选择(如果它存在)构建,即<compilation debug="false">

您可以通过清除然后将忽略规则添加到BundleCollection.IgnoreList来控制此行为。一个例子BundleConfig看起来是这样的:

public static class BundleConfig 
{ 
    public static void RegisterBundles(BundleCollection bundles) 
    { 
     ConfigureIgnoreList(bundles.IgnoreList); 

     // Setup your bundles... 
    } 

    public static void ConfigureIgnoreList(IgnoreList ignoreList) 
    { 
     if (ignoreList == null) throw new ArgumentNullException("ignoreList"); 

     ignoreList.Clear(); // Clear the list, then add the new patterns. 

     ignoreList.Ignore("*.intellisense.js"); 
     ignoreList.Ignore("*-vsdoc.js"); 
     ignoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled); 
     // ignoreList.Ignore("*.min.js", OptimizationMode.WhenDisabled); 
     ignoreList.Ignore("*.min.css", OptimizationMode.WhenDisabled); 
    } 
} 

您也可以明确地启用/通过设置BundleTable.EnableOptimizations禁用优化。

+4

听起来不错。我们在这里完成。 – vbullinger 2013-02-19 21:51:15