Включить объединение и минификацию в режиме отладки в ASP.NET MVC 4

112

Не могу поверить, что не могу найти другие вопросы по этому поводу, но: как включить объединение в режим отладки? Я знаю, как он включен для режима выпуска, но в режиме отладки я не могу найти способ включить объединение.

Возможно ли это, или я что-то упускаю?

MLowijs
источник

Ответы:

214

Вы можете включить это, добавив

BundleTable.EnableOptimizations = true;

в вашем методе RegisterBundles (класс BundleConfig в папке App_Start).

проверьте http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification для получения дополнительной информации

Вы также можете изменить свой web.config:

<system.web>
    <compilation debug="false" />
</system.web>

Но это полностью отключит режим отладки, поэтому я бы рекомендовал первый вариант.

Наконец, чтобы получить лучшее из обоих миров, используйте директиву компилятора #if следующим образом:

#if DEBUG
            BundleTable.EnableOptimizations = false;
#else
            BundleTable.EnableOptimizations = true;
#endif
Барт Бейерс
источник
4
Я бы пошел дальше и добавил настраиваемый раздел конфигурации в ваш web.config (или, как минимум, в запись AppSetting). Таким образом, вы можете выборочно включать / отключать оптимизацию без необходимости делать перестройку.
Joe the Coder
1
или операторы использования #if DEBUG& #if !DEBUGпрекомпилятора
Лиам
Также имейте в виду, что это переопределяет debug="true"конфигурацию, поэтому оптимизации всегда включаются или отключаются, если вы жестко закодируете это значение
Лиам
1
Или используйте "многословный" MVC, какif (HttpContext.Current.IsDebuggingEnabled) { BundleTable.EnableOptimizations = false; } else { BundleTable.EnableOptimizations = true; }
Tiramonium
если вам нравится вариант веб-конфигурации, вы также можете настроить несколько веб-конфигураций для каждой конфигурации, поэтому отладка веб-конфигурации будет истинной, а выпуск будет ложным docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/…
Мэтью Эллисон
11

добавить BundleTable.EnableOptimizations = true;в Application_Start()методе Global.asaxфайл

Cris
источник
-2

В Global.asax добавьте BundleConfig.RegisterBundles(BundleTable.Bundles);

 protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles); // add this
        }
Эяль
источник
-5

На официальном сайте MS говорится, что во время отладки невозможно включить его. Думаю, причина в том, что его легче отлаживать, пока он отключен. Если вы хотите протестировать влияние на ваше приложение, вы должны установить <compilation debug="true" />в Web.config

@Hebe: цитировать страницу MS

Отладить ваш JavaScript в среде разработки (где для элемента компиляции в файле Web.config установлено значение debug = "true") легко, поскольку файлы JavaScript не объединены и не уменьшены.

Энносуке
источник
В моем случае я просто хотел отладить внутренний код C #, и из-за того, как настроено наше приложение, нам нужно объединение для правильной загрузки всех таблиц стилей и скриптов.
MLowijs
3
@Ennosuke - Хотя это может быть проще отлаживать, иногда возникают ошибки Javascript, вызванные процессом минификации, которые требуют, чтобы вы могли запускать минифицированные скрипты локально.
Joe the Coder