Ich habe debug="true"
in beiden web.config (s) , und ich möchte nur nicht, dass meine Bundles minimiert werden, aber nichts, was ich tue, scheint es zu deaktivieren. Ich habe versucht enableoptimisations=false
, hier ist mein Code:
//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
quelle
quelle
Antworten:
Wenn Sie
debug="true"
in web.configScripts/Styles.Render
auf die Bundles auf Ihren Seiten verweisen und diese verwenden , sollte dies sowohl die Bündelung als auch die Minimierung deaktivieren.BundleTable.EnableOptimizations = false
schaltet immer sowohl die Bündelung als auch die Minimierung aus (unabhängig vom Debug-Flag true / false).Verwenden Sie die
Scripts/Styles.Render
Helfer vielleicht nicht ? Wenn Sie über direkt Verweise auf das Bundle rendern, erhaltenBundleTable.Bundles.ResolveBundleUrl()
Sie immer den minimierten / gebündelten Inhalt.quelle
EnableOptimizations = false
- Wo gehört dieser Code hin?Anweisungen zur bedingten Kompilierung sind dein Freund:
quelle
Um die Bündelung und Minimierung zu deaktivieren, geben Sie einfach Ihre ASPX- Datei ein (dies deaktiviert die Optimierung, selbst wenn Sie sich
debug=true
in web.config befinden ).vb.net:
c # .net
Wenn Sie dies setzen,
EnableOptimizations = true
wird dies auchdebug=true
in web.config gebündelt und minimiertquelle
debug="true"
und das Recht,Script.Render
aber es funktionierte immer noch nicht. Beachten Sie auch, dass dadurch keine .min.js-Dateien auf dem Server gespeichert werden. Stellen Sie daher sicher, dass Sie nicht abgeschlossene Kopien des Abhängigkeitscodes einschließen.False
?Sie können die Minimierung in Ihren Bundles einfach deaktivieren, indem Sie Ihre Transformationen löschen.
Ich persönlich fand dies nützlich, wenn ich alle meine Skripte in einer einzigen Datei bündeln wollte, aber während der Debugging-Phasen Lesbarkeit benötigte.
quelle
Ich habe viele dieser Vorschläge ausprobiert, aber es schien zu funktionieren. Ich habe einige Stunden verschwendet, nur um herauszufinden, dass dies mein Fehler war:
Es hat mich immer minimiert und Javascript gebündelt, egal was ich versucht habe. Stattdessen hätte ich Folgendes verwenden sollen:
Das zusätzliche '~' hat es geschafft. Ich habe es sogar in nur einem Fall wieder entfernt, um zu sehen, ob es wirklich so war. Es war ... hoffentlich kann ich mindestens eine Person die Stunden sparen, die ich damit verschwendet habe.
quelle
Kombinieren Sie mehrere Antworten, dies funktioniert für mich in ASP.NET MVC 4.
quelle
Es gibt auch eine einfache Möglichkeit, die Minimierung (und andere Funktionen) manuell zu steuern. Es ist ein neuer CssMinify () - Transformator , der Folgendes verwendet:
Dies ist praktisch, wenn Sie möchten, dass einige Bundles als Spezialteil nur minimiert werden. Angenommen, Sie verwenden einige Standardstile (jQuery), die Ihnen in die Quere kommen (und viele übermäßige Browseranforderungen an sie richten), aber Sie möchten Ihr eigenes Stylesheet nicht minimieren. (Das gleiche - mit Javascript).
quelle
Ich habe einige Antworten anderer in dieser Frage kombiniert, um eine andere alternative Lösung zu finden.
Ziel: Die Dateien immer zu bündeln, die JS- und CSS-Minimierung für den Fall zu deaktivieren
<compilation debug="true" ... />
und immer eine benutzerdefinierte Transformation auf das CSS-Bundle anzuwenden.Meine Lösung :
1) In web.config :
<compilation debug="true" ... />
2) In der Global.asax Application_Start () -Methode:
quelle
Wenn Sie die folgende Eigenschaft auf false setzen, werden sowohl die Bündelung als auch die Minimierung deaktiviert.
In Global.asax.cs Datei, fügen Sie die Zeile wie unten erwähnt
quelle
So deaktivieren Sie die Minifizierung auf Bundle-Basis:
Nebenbemerkung: Die für Ihre Bundles verwendeten Pfade dürfen nicht mit einem tatsächlichen Pfad in Ihren veröffentlichten Builds übereinstimmen, da sonst nichts funktioniert. Vermeiden Sie außerdem die Verwendung von .js, .css und / oder '.' und '_' irgendwo im Namen des Bundles. Halten Sie den Namen so einfach und unkompliziert wie möglich, wie im obigen Beispiel.
Die Hilfsklassen sind unten aufgeführt. Beachten Sie, dass wir, um diese Klassen zukunftssicher zu machen, die Minimierungsinstanzen js / css chirurgisch entfernen, anstatt .clear () zu verwenden, und auch eine Mime-Type-Setter-Transformation einfügen, ohne die Produktions-Builds vor allem dann in Schwierigkeiten geraten, wenn Es geht darum, CSS-Bundles ordnungsgemäß zu übergeben (Firefox- und Chrome lehnen CSS-Bundles ab, wobei der MIME-Typ auf "Text / HTML" gesetzt ist, was die Standardeinstellung ist):
Damit das Ganze funktioniert, müssen Sie es installieren (via Nuget):
WebGrease 1.6.0+ Microsoft.AspNet.Web.Optimization 1.1.3+
Und Ihre web.config sollte folgendermaßen angereichert werden:
Beachten Sie, dass Sie möglicherweise zusätzliche Schritte unternehmen müssen, damit Ihre CSS-Bundles in Bezug auf Schriftarten usw. funktionieren. Aber das ist eine andere Geschichte.
quelle
Um die bereits gegebenen Antworten zu ergänzen, sollten Sie auch einige Dateien NICHT minimieren / verschleiern / verketten, während Sie dennoch die vollständige Bündelung und Minimierung für andere Dateien zulassen. Verwenden Sie am besten einen benutzerdefinierten Renderer, der den Inhalt eines bestimmten Bundles liest (s) und rendern Sie die Dateien auf der Seite, anstatt den virtuellen Pfad des Bundles zu rendern. Ich persönlich habe dies benötigt, weil IE 9 $ *% im Bett war, als meine CSS-Dateien gebündelt wurden, obwohl die Minimierung deaktiviert war .
Vielen Dank an diesen Artikel , der mir den Ausgangspunkt für den Code gab, mit dem ich einen CSS-Renderer erstellt habe, der die Dateien für das CSS rendert, dem System jedoch ermöglicht, meine Javascript-Dateien gebündelt / minimiert / verschleiert zu rendern.
Erstellt die statische Hilfsklasse:
Dann in der Rasiermesser-Layout-Datei:
anstelle des Standards:
Ich bin sicher, dass das Erstellen eines optionalen Renderers für Javascript-Dateien auch für die Aktualisierung dieses Hilfsprogramms nur wenig erforderlich ist.
quelle
CssTemplate
zu etwas wie"<link href=\"{0}?f={1}\" rel=\"stylesheet\" type=\"text/css\" />"
und diesb.AppendFormat
Zeile zu etwas wiesb.AppendFormat(CssTemplate + Environment.NewLine, urlHelper.Content(file.VirtualFile.VirtualPath), System.IO.File.GetLastWriteTimeUtc(HttpContext.Current.Server.MapPath(file.IncludedVirtualPath)).Ticks);
Suchen Sie
EnableOptimizations
in Ihrem Projekt nach einem SchlüsselwortAlso, wenn Sie finden
dreh es um
false
.quelle
Wenn Sie die LESS / SASS-CSS-Transformation verwenden, gibt es eine Option,
useNativeMinification
die auf false gesetzt werden kann, um die Minimierung zu deaktivieren (in web.config). Für meine Zwecke ändere ich es hier nur, wenn es nötig ist, aber Sie können web.config-Transformationen verwenden, um es beim Release-Build immer zu aktivieren oder vielleicht einen Weg zu finden, es im Code zu ändern.Tipp: Der springende Punkt dabei ist, Ihr CSS anzuzeigen, was Sie in den Browser-Inspektionstools oder durch einfaches Öffnen der Datei tun können. Wenn die Bündelung aktiviert ist, ändert sich der Dateiname bei jeder Kompilierung, sodass ich Folgendes oben auf meine Seite setze, damit ich mein kompiliertes CSS bei jeder Änderung problemlos in einem neuen Browserfenster anzeigen kann.
Dies wird eine dynamische URL sein
https://example.com/Content/css/bundlename?v=UGd0FjvFJz3ETxlNN9NVqNOeYMRrOkQAkYtB04KisCQ1
Update: Ich habe eine web.config-Umwandlung erstellt, um sie während der Bereitstellung / Release-Erstellung auf true zu setzen
quelle
Dies kann in Zukunft als neuen Rahmen für jemanden nützlich werden, wenn Setup durch VS, eine Standard wird
web.config
,web.Debug.config
undweb.Release.config
. In derweb.release.config
finden Sie diese Zeile:Dies schien alle von mir vorgenommenen Inline-Änderungen außer Kraft zu setzen. Ich habe diese Zeile kommentiert und wir waren Sauce (in Bezug auf das Sehen von nicht minimiertem Code in einem "Release" Build)
quelle