Как отключить минификацию Javascript / CSS в бета-версии ASP.NET MVC 4
-
28-10-2019 - |
Вопрос
Я просто пробую использовать ASP.NET MVC 4, но не могу понять, как отключить функцию минимизации Javascript / CSS.Особенно для среды разработки это очень поможет при отладке.Я бы предположил, что это будет переключатель в web.config, но поскольку ASP.NET MVC 4 все еще находится в стадии бета-тестирования, на данный момент действительно мало информации.Был бы признателен, если бы кто-нибудь мог помочь или указать на нужные сообщения в блоге и т. Д.
Решение
В Global.asax.cs
родовое словоДругие советы
Другой вариант - создать помощник HTML, который можно использовать для создания сценария и тегов ссылок.Вот что я реализовал для Javascript, что также можно сделать для CSS:
родовое словоТеперь все, что вам нужно сделать, это вызвать его в вашем представлении:
родовое словоИ он будет отображать сценарии как отдельные ссылки или использовать новую функцию связывания / минификации в зависимости от того, какие настройки отладки указаны в вашем web.config.Я использовал часть кода из http://codecutout.com/resource-minify-bundling какссылка при создании моего помощника, если вы хотите увидеть еще несколько примеров.Их помощник написан немного лучше, выдает исключения при предоставлении недопустимых аргументов и т. Д. Я просто еще не успел очистить свой.
Вы можете зарегистрировать свои собственные пакеты в Global.asax и использовать класс NoTransform
, если вы не хотите, чтобы контент был минимизирован.
Лично я вообще не хочу, чтобы мой скрипт трансформировался.Я просто создаю два каталога сценариев.Один с версиями сценария отладки, а другой - с первоначально загруженными минимизированными версиями.
Стандартный минификатор MVC 4 (JsMinify) ломает jQuery 1.7.1 для Opera, поэтому я не хочу его использовать.Я просто поместил следующие строки в свой метод Global.asax : Application_Start()
:
Имея это место, я могу просто добавить одну из двух строк в свой код общего кода:
родовое словоКонечно, мы могли бы сделать это немного веселее.Мы могли бы сгенерировать только один пакет и в зависимости от типа сборки выбрать, какие файлы включить.
После вызова EnableDefaultBundles()
в Global.asax вы можете сделать это ...
Неприятно (изменение состояния, установленного системой), но в нем намного меньше кода, чем во всех других предложениях, все же позволяет использовать стандартное поведение объединения и не требует каких-либо изменений в ваших представлениях.
В более новых версиях ASP.NET MVC просто добавьте
родовое словосразу после
родовое слововы можете отключить его из конфигурации:
родовое словоhttp://www.asp.net/mvc/учебники / mvc-4 / bundling-and-minification
Думаю, было бы правильно, если такая функция будет доступна «из коробки».
Я разместил отзыв на UserVoice.com: http://aspnet.uservoice.com/forums/41201-asp-net-mvc/suggestions/2702000-improve-system-web-optimization-bundle
Дайте ему свои «голоса».
Вместо замены экземпляров JsMinify и CssMinify можно использовать интерфейсы. Этот параметр был недоступен в более ранних версиях, поскольку второй параметр конструктора был типом, а не интерфейсом.
родовое словоВозможно, стоит также отметить скрипты, которые поставляются с минимизированными и неминифицированными версиями, напримерjQuery, можно использовать вспомогательный метод, чтобы при желании исключить ".min" для сборок DEBUG, чтобы облегчить отладку:
родовое словоПопробуйте новое расширение для System.Web.Optimization - Bundle Transformer .В Bundle Transformer реализован ряд возможностей для упрощения отладки (см. документацию ).
Другая альтернатива (протестирована с v1.1.0.0 и MVC5):
родовое слово