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


112

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

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

Ответы:


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файл


-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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.