20

从一个全新的 ASP.NET MVC 4 Beta Web 应用程序,我重新排列我的文件夹以匹配 Rob Conery 的VidPub.Web 示例

具体来说,这意味着内容的最终目录结构如下所示

VidPub.Web
 |
 - -上市
    |
    |---图片
          |--- *.png
    |---javascripts
          |--- *.js
    |---样式表
         |----主题
              |---基地  
                  |--- 图片
                  |--- *.css
        |----site.css

但是,当我更改以下行时 _Layout.cshtml

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

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

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
             "~/Scripts/js")"></script>

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

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

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
           "~/Public/javascripts/js")"></script>

我最终在生成的 HTML 中一无所获。

<link rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" />
<script></script>

为什么它不在新位置提取文件?

4

2 回答 2

25

在使用Application_Start中而不是Global.asax.csBundleTable.Bundles.EnableDefaultBundles();BundleTable.Bundles.RegisterTemplateBundles();

如果您查看源代码,RegisterTemplateBundles您会发现它实际上只查找(并添加)特定的 js 和 css 文件。EnableDefaultBundles另一方面,与添加自己的捆绑包时几乎相同。

于 2012-03-29T12:38:06.697 回答
21

使用非默认目录时,您似乎必须注册自己的包。我添加了以下内容Application_Start并解决了问题

var bundle = new Bundle("~/Public/stylesheets/css", new CssMinify());
bundle.AddDirectory("~/Public/stylesheets", "*.css", true);
BundleTable.Bundles.Add(bundle);

bundle = new Bundle("~/Public/javascripts/js", new JsMinify());
bundle.AddDirectory("~/Public/javascripts", "*.js", true);
BundleTable.Bundles.Add(bundle);
于 2012-03-10T15:26:42.713 回答