Mam debug="true"
oba pliki web.config i po prostu nie chcę, aby moje pakiety zostały zminimalizowane, ale nic, co robię, nie wydaje się, aby je wyłączyć. Próbowałem enableoptimisations=false
, oto mój kod:
//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
źródło
źródło
Odpowiedzi:
Jeśli masz
debug="true"
w web.config i korzystaniaScripts/Styles.Render
odwołać wiązek w swoich stronach, że należy wyłączyć zarówno wiązania i minifikacji.BundleTable.EnableOptimizations = false
zawsze wyłącza zarówno pakowanie, jak i minimalizację (niezależnie od debugowanej flagi true / false).Być może nie używasz
Scripts/Styles.Render
pomocników? Jeśli bezpośrednio renderujesz odniesienia do pakietuBundleTable.Bundles.ResolveBundleUrl()
, zawsze otrzymasz zminimalizowaną / powiązaną zawartość.źródło
EnableOptimizations = false
- gdzie należy ten kod?Wytyczne dotyczące kompilacji są Twoim przyjacielem:
źródło
Aby wyłączyć pakietowanie i minimalizację, po prostu umieść ten plik .aspx (spowoduje to wyłączenie optymalizacji, nawet jeśli
debug=true
w pliku web.config )vb.net:
c # .net
Jeśli umieścisz
EnableOptimizations = true
to spakuje i zminimalizuje, nawet jeślidebug=true
w web.configźródło
debug="true"
i słusznie,Script.Render
ale wciąż nie działało. Pamiętaj również, że nie będzie to serwer żadnych plików .min.js, więc pamiętaj o dołączeniu nieuprawnionych kopii kodu zależności.False
?Możesz wyłączyć minifikację w swoich pakietach, po prostu usuwając transformacje.
Osobiście uważam to za przydatne, gdy chcę spakować wszystkie moje skrypty w jednym pliku, ale potrzebowałem czytelności podczas faz debugowania.
źródło
Próbowałem wiele z tych sugestii, ale zauważyłem, że zadziałało. Zmarnowałem kilka godzin, aby dowiedzieć się, że to mój błąd:
Zawsze mam zminimalizowany i dołączony javascript, bez względu na to, czego próbowałem. Zamiast tego powinienem był użyć tego:
Dodatkowe „~” to zrobiło. Nawet usunąłem go ponownie tylko w jednym przypadku, aby zobaczyć, czy tak naprawdę było. To było ... mam nadzieję, że mogę zaoszczędzić przynajmniej jednej osobie godziny, które na to straciłem.
źródło
Połącz kilka odpowiedzi, to działa dla mnie w ASP.NET MVC 4.
źródło
Istnieje również prosty sposób ręcznego kontrolowania minimalizacji (i innych funkcji). Jest to nowy transformator CssMinify (), wykorzystujący:
Jest to wygodne, gdy chcesz mieć specjalne pakiety tylko do zminimalizowania. Załóżmy, że używasz niektórych standardowych stylów (jQuery), które dostają się pod twoje stopy (przyjmując do nich zbyt wiele żądań przeglądarki), ale chcesz zachować nieupoważniony własny arkusz stylów. (To samo - z javascript).
źródło
Połączyłem kilka odpowiedzi udzielonych przez inne osoby w tym pytaniu, aby znaleźć inne alternatywne rozwiązanie.
Cel: zawsze wiązać pliki, wyłączać minimalizację JS i CSS w przypadku, gdy
<compilation debug="true" ... />
i zawsze stosować niestandardową transformację do pakietu CSS.Moje rozwiązanie :
1) W pliku web.config :
<compilation debug="true" ... />
2) W metodzie Global.asax Application_Start () :
źródło
Jeśli ustawisz następującą właściwość na false, spowoduje to wyłączenie zarówno sprzedaży pakietowej, jak i minimalizacji.
W pliku Global.asax.cs dodaj wiersz, jak wspomniano poniżej
źródło
Oto jak wyłączyć minimalizację dla poszczególnych pakietów:
Uwaga: ścieżki użyte w twoich pakietach nie mogą pokrywać się z żadną rzeczywistą ścieżką w opublikowanych kompilacjach, w przeciwnym razie nic nie zadziała. Pamiętaj także, aby unikać używania plików .js, .css i / lub „.” i „_” w dowolnym miejscu w nazwie pakietu. Zachowaj nazwę tak prostą i zrozumiałą, jak to możliwe, jak w powyższym przykładzie.
Klasy pomocników pokazano poniżej. Zauważ, że aby uczynić te klasy przyszłymi, usuwamy chirurgicznie instancje minimalizujące js / css zamiast .clear (), a także wstawiamy transformację ustawiającą typy MIME, bez której kompilacje produkcyjne będą miały problemy, szczególnie gdy chodzi o prawidłowe przekazywanie pakietów css (firefox i chrome odrzucają pakiety css z typem MIME ustawionym na „text / html”, który jest domyślny):
Aby to wszystko działało, musisz zainstalować (przez nuget):
WebGrease 1.6.0+ Microsoft.AspNet.Web.Optimization 1.1.3+
A twój web.config powinien zostać wzbogacony w następujący sposób:
Pamiętaj, że może być konieczne wykonanie dodatkowych kroków, aby Twoje pakiety css działały pod względem czcionek itp. Ale to inna historia.
źródło
Aby uzupełnić już podane odpowiedzi, jeśli chcesz NIE minimalizować / zaciemniać / konkatenować NIEKTÓRE pliki, jednocześnie pozwalając na pełne wiązanie i minimalizowanie innych plików, najlepszą opcją jest skorzystanie z niestandardowego mechanizmu renderującego, który będzie odczytywał zawartość konkretnego pakietu (s) i renderuj pliki na stronie zamiast renderować wirtualną ścieżkę pakietu. Osobiście tego wymagałem, ponieważ IE 9 był $ *% @ w łóżku, gdy moje pliki CSS były pakowane nawet przy wyłączonej funkcji minimalizacji .
Bardzo dziękuję temu artykułowi , który dał mi punkt wyjścia do kodu, którego użyłem do utworzenia Renderera CSS, który renderowałby pliki dla CSS, ale nadal pozwalał systemowi renderować moje pliki javascript w pakiecie / zminimalizowane / zaciemnione.
Utworzono statyczną klasę pomocnika:
Następnie w pliku układu maszynki do golenia:
zamiast standardu:
Jestem pewien, że utworzenie opcjonalnego mechanizmu renderującego dla plików javascript również nie wymagałoby aktualizacji do tego pomocnika.
źródło
CssTemplate
na coś podobnego"<link href=\"{0}?f={1}\" rel=\"stylesheet\" type=\"text/css\" />"
i zmienićsb.AppendFormat
wiersz na coś takiegosb.AppendFormat(CssTemplate + Environment.NewLine, urlHelper.Content(file.VirtualFile.VirtualPath), System.IO.File.GetLastWriteTimeUtc(HttpContext.Current.Server.MapPath(file.IncludedVirtualPath)).Ticks);
Szukaj
EnableOptimizations
słowo kluczowe w swoim projekcieWięc jeśli znajdziesz
obróć to
false
.źródło
Jeśli używasz transformacji LESS / SASS CSS,
useNativeMinification
możesz ustawić opcję false, aby wyłączyć minifikację (w pliku web.config). Dla moich celów po prostu zmieniam go tutaj, kiedy jest to konieczne, ale możesz użyć transformacji web.config, aby zawsze włączać go w wersji kompilacji lub znaleźć sposób modyfikacji w kodzie.Wskazówka: Chodzi o to, aby wyświetlić Twój CSS, co możesz zrobić w przeglądarce narzędzi inspekcji lub po prostu otwierając plik. Gdy pakietowanie jest włączone, nazwy plików zmieniają się przy każdym kompilacji, dlatego umieszczam poniższe na górze mojej strony, aby za każdym razem móc przeglądać skompilowany CSS w nowym oknie przeglądarki.
będzie to dynamiczny adres URL podobny do tego
https://example.com/Content/css/bundlename?v=UGd0FjvFJz3ETxlNN9NVqNOeYMRrOkQAkYtB04KisCQ1
Aktualizacja: Utworzyłem transformację web.config, aby ustawić ją na wartość true podczas kompilacji wdrażania / wydania
źródło
Może to stać się przydatne do kogoś w przyszłości nowych ram, gdy konfiguracja przez VS, staje się domyślną
web.config
,web.Debug.config
aweb.Release.config
. W liniiweb.release.config
znajdziesz:zdawało się, że to zastępuje wszelkie wprowadzone przeze mnie zmiany. Skomentowałem tę linię i byliśmy powściągliwi (jeśli chodzi o wyświetlanie niezmodyfikowanego kodu w kompilacji „release”)
źródło