ResolveBundleUrl没有解析所有文件?

时间:2012-03-08 20:01:28

标签: c# optimization asp.net-mvc-4 asp.net-optimization

我是MVC的新手,所以我想开始一个新项目并尝试MVC4中的一些新功能。我的Content目录normalise_minisite.css中有两个css文件。当我使用以下代码时:

<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />

只有我的site.css文件不是我的规范化文件。我在应用开始时有以下内容:

protected void Application_Start()
{

    // Remove all other view engines except razor:
    ViewEngines.Engines.Clear();
    ViewEngines.Engines.Add(new RazorViewEngine());

    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);

    BundleTable.Bundles.RegisterTemplateBundles();
    BundleTable.Bundles.EnableDefaultBundles();
}

我是否需要为每个css文件创建一个包(正如this人正在做的那样)?或者它应该只是自动找到所有的css文件(我希望这是默认行为)。值得注意的是,我将这个项目作为基于Razor视图引擎的空网站启动(实际上根本不是空的:/)

提前致谢


更新

根据发布的链接,我需要注释掉注册模板包的行。例如:

protected void Application_Start()
{

    // Remove all other view engines except razor:
    ViewEngines.Engines.Clear();
    ViewEngines.Engines.Add(new RazorViewEngine());

    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);

    //BundleTable.Bundles.RegisterTemplateBundles();  // This is not needed
    BundleTable.Bundles.EnableDefaultBundles();
}

这现在有效。我的想法是两条线应该没有任何问题共存。我想这是设计,但设计不好吗?

2 个答案:

答案 0 :(得分:10)

别人已经回答了这个问题:

http://forums.asp.net/t/1776599.aspx/1?MVC+4+0+Bundling+Minification+not+working+

更新:

有人担心链接可能不足以回答这个问题。虽然我仍然认为访问此页面的人应该阅读链接的线程,但简短的回答是从Application_Start()中删除BundleTable.Bundles.RegisterTemplateBundles()行并将其替换为BundleTable.Bundles.EnableDefaultBundles()

答案 1 :(得分:0)

注意:从1.0.0 RTM版本的Optmization中删除了EnableDefaultBundles,您仍然可以通过设置自己的DynamicFolderBundles获得相同的功能。但一般情况下,这可能会导致问题(通常在批量包含* .js时未捕获的文件中存在依赖关系),因此我们转移到显式捆绑设置并远离EnableDefaultBundles。

获取最新的文档/教程:Codeplex Documentation