Я имею debug="true"
в обоих своих web.config (s) , и я просто не хочу минимизировать свои пакеты, но ничего, что я делаю, кажется, отключить его. Я пробовал enableoptimisations=false
, вот мой код:
//Javascript
bundles.Add(new ScriptBundle("~/bundles/MainJS")
.Include("~/Scripts/regular/lib/mvc/jquery.validate.unobtrusive.js*")
.Include("~/Scripts/regular/lib/mvc/jquery.validate*")
.Include("~/Scripts/regular/lib/bootstrap.js")
.IncludeDirectory("~/Scripts/regular/modules", "*.js", true)
.IncludeDirectory("~/Scripts/regular/pages", "*.js", true)
.IncludeDirectory("~/Scripts/regular/misc", "*.js", true));
//CSS
bundles.Add(new StyleBundle("~/bundles/MainCSS")
.Include("~/Content/css/regular/lib/bootstrap.css*")
.IncludeDirectory("~/Content/css/regular/modules", "*.css", true)
.IncludeDirectory("~/Content/css/regular/pages", "*.css", true))
asp.net
asp.net-mvc
asp.net-mvc-4
bundle
asp.net-optimization
Baconbeastnz
источник
источник
Ответы:
Если у вас есть
debug="true"
в web.config и используетсяScripts/Styles.Render
для ссылки на пакеты на ваших страницах, что следует отключить как пакетирование и Минимизация.BundleTable.EnableOptimizations = false
всегда будет отключать как связывание, так и минимизацию (независимо от флага отладки истина / ложь).Возможно, вы не используете
Scripts/Styles.Render
помощников? Если вы напрямую предоставляете ссылки на пакет черезBundleTable.Bundles.ResolveBundleUrl()
вас, вы всегда получите минимизированный / пакетный контент.источник
EnableOptimizations = false
- где этот код принадлежит?Директивы условной компиляции - ваш друг:
источник
Чтобы отключить связывание и минимизацию, просто поместите этот файл .aspx (это отключит оптимизацию, даже если
debug=true
в web.config )vb.net:
C # .NET
Если вы положите
EnableOptimizations = true
это будет связывать и минимизировать, даже еслиdebug=true
в web.configисточник
debug="true"
и право,Script.Render
но оно все равно не работало. Также обратите внимание, что это не приведет к серверу каких-либо файлов .min.js, поэтому обязательно включайте незавершенные копии кода зависимости.False
?Вы можете отключить минификацию в ваших пакетах, просто очистив свои преобразования.
Лично я нашел это полезным, когда хотел объединить все мои скрипты в один файл, но мне нужно было удобочитаемость на этапах отладки.
источник
Я перепробовал многие из этих предложений, но, казалось, что сработало. Я потратил немало часов, чтобы узнать, что это была моя ошибка:
Это всегда сводило меня к минимуму и в комплекте Javascript, независимо от того, что я пытался. Вместо этого я должен был использовать это:
Дополнительный '~' сделал это. Я даже удалил его снова только в одном случае, чтобы посмотреть, действительно ли это так. Это было ... надеюсь, я смогу сэкономить хотя бы одному человеку часы, которые я потратил на это.
источник
Объедините несколько ответов, это работает для меня в ASP.NET MVC 4.
источник
Существует также несколько простых способов управления минификацией (и другими функциями) вручную. Это новый преобразователь CssMinify (), использующий, например:
Это удобно, когда вы хотите иметь какую-то специальную часть связок только для минимизации. Допустим, вы используете некоторые стандартные (jQuery) стили, которые становятся у вас под ногами (принимая на себя множество чрезмерных запросов браузера), но вы хотите, чтобы ваша таблица стилей оставалась неизменной. (То же самое - с javascript).
источник
Я объединил несколько ответов, данных другими в этом вопросе, чтобы найти другое альтернативное решение.
Цель: всегда связывать файлы, отключить минимизацию JS и CSS в случае, если
<compilation debug="true" ... />
и всегда применять пользовательское преобразование к комплекту CSS.Мое решение :
1) В web.config :
<compilation debug="true" ... />
2) В методе Global.asax Application_Start () :
источник
Если для следующего свойства установлено значение false, оно отключит как связывание, так и минимизацию.
В файле Global.asax.cs добавьте строку, как указано ниже
источник
Вот как отключить минификацию для каждого пакета:
Sidenote: пути, используемые для ваших пакетов, не должны совпадать с реальными путями в ваших опубликованных сборках, иначе ничего не будет работать. Также убедитесь, что вы не используете .js, .css и / или '.' и '_' в любом месте имени пакета. Сохраняйте имя как можно более простым и понятным, как в примере выше.
Вспомогательные классы показаны ниже. Обратите внимание, что для обеспечения устойчивости этих классов в будущем мы хирургическим путем удаляем минимизирующие экземпляры js / css вместо использования .clear (), а также вставляем преобразование типа mime-type-setter, без которого производственные сборки неизбежно сталкиваются с проблемами, особенно когда это происходит для правильной передачи css-пакетов (Firefox и Chrome отклоняют css-пакеты с mime-type, установленным в «text / html», который используется по умолчанию):
Чтобы все это работало, вам нужно установить (через nuget):
WebGrease 1.6.0+ Microsoft.AspNet.Web.Optimization 1.1.3+
И ваш web.config должен быть обогащен так:
Обратите внимание, что вам, возможно, придется предпринять дополнительные шаги, чтобы заставить ваши css-связки работать с точки зрения шрифтов и т. Д. Но это другая история.
источник
Просто чтобы дополнить уже предоставленные ответы, если вы также хотите НЕ минимизировать / обфусцировать / объединять НЕКОТОРЫЕ файлы, в то же время допуская полное объединение и минимизацию для других файлов, лучшим вариантом является использование пользовательского средства визуализации, которое будет считывать содержимое определенного пакета. (s) и отображать файлы на странице, а не отображать виртуальный путь пакета. Я лично требовал этого, потому что IE 9 стоил $ *% @ кровати, когда мои CSS-файлы были связаны даже с выключенным минимизацией .
Большое спасибо этой статье , которая дала мне отправную точку для кода, который я использовал для создания CSS-рендерера, который отображал бы файлы для CSS, но все же позволял системе отображать мои javascript-файлы в связке / минимизации / запутывания.
Создан статический вспомогательный класс:
Затем в файле макета бритвы:
вместо стандартного:
Я уверен, что создание необязательного рендерера для файлов javascript не потребует особых усилий для обновления этого помощника.
источник
CssTemplate
на что-то вроде"<link href=\"{0}?f={1}\" rel=\"stylesheet\" type=\"text/css\" />"
и изменитьsb.AppendFormat
строку на что-то вродеsb.AppendFormat(CssTemplate + Environment.NewLine, urlHelper.Content(file.VirtualFile.VirtualPath), System.IO.File.GetLastWriteTimeUtc(HttpContext.Current.Server.MapPath(file.IncludedVirtualPath)).Ticks);
Ищи
EnableOptimizations
ключевому слову в вашем проектеТак что если вы найдете
включи это
false
.источник
Если вы используете CSS-преобразование LESS / SASS, есть опция,
useNativeMinification
которая может быть установлена в false, чтобы отключить минимизацию (в web.config). Для моих целей я просто изменяю его здесь, когда мне нужно, но вы можете использовать преобразования web.config, чтобы всегда включать его в сборке релиза или, возможно, найти способ изменить его в коде.Совет: весь смысл этого заключается в том, чтобы просмотреть ваш CSS, что вы можете сделать в инструментах проверки браузера или просто открыв файл. Когда пакетирование включено, имя файла изменяется при каждой компиляции, поэтому я помещаю следующее в верхней части моей страницы, чтобы я мог ежедневно просматривать скомпилированный CSS-файл в новом окне браузера при каждом его изменении.
это будет динамический URL что-то вроде
https://example.com/Content/css/bundlename?v=UGd0FjvFJz3ETxlNN9NVqNOeYMRrOkQAkYtB04KisCQ1
Обновление: я создал преобразование web.config, чтобы установить для него значение true во время развертывания / сборки выпуска
источник
Это может оказаться полезным для кого - то в будущем , так как новые рамки, когда установка через VS, получает значение по умолчанию
web.config
,web.Debug.config
иweb.Release.config
. Вweb.release.config
вы найдете эту строку:казалось, это отменяет любые встроенные изменения, которые я сделал. Я прокомментировал эту строку, и мы подливались (с точки зрения просмотра не минимизированного кода в сборке "релиза")
источник