2015-02-12 17 views
7

Wenn ich meinen Code in Visual Studio im Veröffentlichungsmodus ausführe und das enthaltene Stylesheet überprüfe, sehe ich meine Aktualisierungen für die CSS-Dateien in diesem Bundle. Wenn ich die Website jedoch auf dem Server oder meinem lokalen Computer veröffentliche, sind meine Änderungen in den Stylesheets nicht zustande gekommen. Das gebündelte Stylesheet ist immer noch das alte.Beim Veröffentlichen einer Website werden meine CSS-Bundles nicht aktualisiert.

Ich habe versucht, einen IIS Reset, einen sauberen Build/Rebuild, löschte alle Dateien aus dem IIS-Ordner und erneut veröffentlicht.

Ich benutze weniger, wenn das einen Unterschied macht.

Mein Bündel config:

bundles.Add(new StyleBundle("~/bundles/requiredStyles").Include(
    "~/Content/Style/Libs/bootstrap.min.css", 
    "~/Content/Style/Libs/font-awesome.min.css", 
    "~/Content/Style/Globals/application.css", 
    "/Content/Style/Libs/muliDropdown.css", 
    "~/Content/Style/Libs/smoothDivScroll.min.css", 
    "~/Content/Style/Libs/jasny-bootstrap.min.css" 
)); 

ich durch den Besuch der gebündelten CSS-Überprüfung http://www.mywebsite.com/bundles/requiredStyles

Also machte ich eine Veränderung in application.css was in Ordnung ist, wenn ich spielen in Visual Studio getroffen (in Freigabemodus), aber wenn ich in meinem lokalen IIS veröffentliche, ist meine Änderung nicht mehr vorhanden.

+0

Wenn Sie bereits versucht haben, alle Dateien aus dem IIS-Ordner zu löschen und die Site erneut zu veröffentlichen, kann ich nur daran denken, dass der Browser die alte Version der Datei zwischenspeichert, aber ich nehme an, dass Sie das bereits überprüft haben , Recht? –

+0

Versuchte all das und mehr. Für jetzt habe ich die "Smarts" von BundleTable.EnableOptimizations = false abgeschaltet, so spuckt nun das Bundle jeden css-Dateipfad separat aus, anstatt alle in einen einzuteilen und zu verkleinern. – garethb

Antwort

30

Dies kann passieren, wenn Sie eine verkleinerte Version einer CSS-Datei im selben Verzeichnis haben wie Ihre nicht-finalisierte Datei.

Zum Beispiel, wenn Sie die folgenden Dateien:

 

    ~/Content/bootstrap.css 
    ~/Content/bootstrap.min.css 

in Ihrem Verzeichnis, und Sie die „bootstrap.css“ Datei in Ihrem Bündel registrieren, wird der Optimierer zunächst versuchen, den „Bootstrap zu verwenden. min.css "Datei während der Veröffentlichung. Wenn Sie nur die Datei "bootstrap.css" aktualisiert haben und die Datei "bootstrap.min.css" nicht aktualisiert haben, erhalten Sie die alten Stile von "bootstrap.min.css". Sie können dieses Problem beheben, indem Sie die Datei "bootstrap.min.css" löschen oder aktualisieren.

Dies geschieht nicht in einem Debug-Build, weil es nicht die verkleinerte Dateien, wenn die Kompilierung für Debug mit dem folgenden gesetzt hat ziehen:

<system.web> 
    <compilation debug="true" /> 
    <!-- Lines removed for clarity. --> 
</system.web> 

Sie auch die Einstellung web.config überschreiben können Deaktivieren der Optimierungen über:

 

    BundleTable.EnableOptimizations = false; 

Dies würde in Ihre BundleConfig.cs-Datei gehen.

+0

Deaktivieren der Optimierungen funktioniert gut für mich. Danke ! –

+0

Das Deaktivieren der Optimierung vor der Bundle-Registrierung in BundleConfig.cs funktionierte auch für mich –

1

In meinem Fall bootstrap.min.css existiert auch im Inhalt Ordner, den ich es entfernt und Website funktioniert gut.

per Filip Stanek erwähnt bootstrap.min.css „während Datei veröffentlichen‚‘der Optimierer zunächst die verwenden versuchen“

auch wenn wir es in Bündel Config hinzufügen knapp, während Code es Punkt Veröffentlichung zu „Bootstrap .min.css "

0

Ich bin kürzlich auf ein ähnliches Problem mit der Bündelung gestoßen. Ich benutze angularJS in einem Webapi-Projekt im Visual Studio.

Meine web.config hatte debug auf True festgelegt. Ich setze es auf falsch. Keine Änderung.

Dann habe ich versucht, meine Compiler-Bedingungen zu wahren (in global.asax.cs | app ...Startmethode):

'#if DEBUG' 
     'BundleTable.EnableOptimizations = true;' 
'#else' 
     'BundleTable.EnableOptimizations = true;' 
'#endif' 

Das hat auch nicht funktioniert.

Schließlich habe ich die referenzierte/fehlende Datei (a <controllerName>.js) im Paket an eine andere Stelle im Stapel verschoben. Beim Debuggen entmarkiere ich die Datei aus dem Bundle, weil ich sie direkt in die index.html einfüge. Es ist möglich, dass VS die Änderung nicht kompiliert hat, als ich sie wiederhergestellt habe.

' bundles.Add(new ScriptBundle("~/SomeBundleName.js") 
      .Include("~/Scripts/IWASMissingIntheBundle.js") 
      .Include("~/Scripts/IWASNEVERMISSINGANDstillhere.js") 
      .Include("~/Scripts/MOVEDIWASMissingHEREANDNOWImFound.js")' 

Mein Vorschlag ist, dass der Compiler die Änderung nicht abholen hat und unabhängig davon, Reinigung und Wiederaufbau immer noch nicht. Nach dem Verschieben der Datei und der erneuten Veröffentlichung schien es zu funktionieren.

Aber auch ich löschte den Cache in meinem Browser, nicht nur von der "Clear Cache" -Taste, die ich in Chrome verwenden, sondern auch aus dem Debugger | Netzwerk-Panel. Einige, die durch das obige gehen, sollten helfen.

Verwandte Themen