Подтвердить что ты не робот

Почему ResolveBundleUrl не работает для пользовательских папок? (MVC Beta 4)

Из совершенно нового веб-приложения ASP.NET MVC 4 Beta я переустанавливаю свои папки в соответствии с Rob Conery Пример VidPub.Web

В частности, это означает, что окончательная структура каталогов для содержимого выглядит следующим образом:

VidPub.Web
 |
 ---Public
    |
    |---Images
          |--- *.png 
    |---javascripts
          |--- *.js 
    |---stylesheets
         |----themes
              |---base  
                  |--- images
                  |--- *.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>

В конечном итоге я получаю абсолютно ничего.

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

Почему он не собирает файлы в своих новых местах?

4b9b3361

Ответ 1

В Application_Start в Global.asax.cs используйте BundleTable.Bundles.EnableDefaultBundles(); вместо BundleTable.Bundles.RegisterTemplateBundles();

Если вы посмотрите на источник для RegisterTemplateBundles, вы увидите, что он фактически ищет (и добавляет) конкретные js и css файлы. EnableDefaultBundles, с другой стороны, делает почти то же самое, что и при добавлении собственных пакетов.

Ответ 2

Кажется, вам нужно зарегистрировать свой собственный пакет при использовании каталогов, отличных от по умолчанию. Я добавил следующее в 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);