2013-02-19 15 views
17

Recentemente, il mio copia locale di un progetto completamente perso la maggior parte del suo stile. Mi ci è voluto un po 'per capirlo, dato che la maggior parte dello styling era fatta in un file e il resto erano cose minori come Kendo e jQuery UI.ASP.Net MVC Stile Bundle Ad esclusione maggior parte dei file

L'altro, roba minore non veniva aggiunto alla pagina. Ho pensato che gli stili fossero stati modificati da un altro sviluppatore (non ho toccato questo progetto da un po 'di tempo) che stava solo testando la roba dell'API e non l'interfaccia utente in modo che potesse distruggerlo e non averlo mai conosciuto, ma ho rintracciato il problema: solo il file site.css veniva incluso nel pacchetto e nessuno degli altri. Ho anche provato a riordinare l'ordine dei file CSS inclusi nel pacchetto e includerebbe SOLO site.css.

ho ricostruito il progetto, cancellato la cache, ecc, quindi è stato sicuramente vedere i cambiamenti. Ricordo di aver aggiornato alcuni pacchetti NuGet o pacchetti VS o qualcosa di recente - forse anche il pacchetto MVC?

La mia domanda è: ha fatto qualcosa di cambiamento che ha reso questo accada? Cosa sta causando questo?

EDIT: Codice da BundleConfig.cs:

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.Add(new StyleBundle("~/Content/css").Include(
      "~/Content/site.css", 
      "~/Content/themes/kendo/kendo.common.min.css", 
      "~/Content/themes/kendo/kendo.default.min.css", 
      "~/Content/themes/base/minified/jquery.ui.core.min.css", 
      "~/Content/themes/base/minified/jquery.ui.resizable.min.css", 
      "~/Content/themes/base/minified/jquery.ui.selectable.min.css", 
      "~/Content/themes/base/minified/jquery.ui.accordion.min.css", 
      "~/Content/themes/base/minified/jquery.ui.autocomplete.min.css", 
      "~/Content/themes/base/minified/jquery.ui.button.min.css", 
      "~/Content/themes/base/minified/jquery.ui.dialog.min.css", 
      "~/Content/themes/base/minified/jquery.ui.slider.min.css", 
      "~/Content/themes/base/minified/jquery.ui.tabs.min.css", 
      "~/Content/themes/base/minified/jquery.ui.datepicker.min.css", 
      "~/Content/themes/base/minified/jquery.ui.progressbar.min.css", 
      "~/Content/themes/base/minified/jquery.ui.theme.min.css")); 
} 

Codice da _Layout.cshtml:

@Styles.Render("~/Content/themes/base/css", "~/Content/css") 
+0

prega potreste pubblicare il tuo codice di bundling. – ngm

+0

Aggiornato con il codice, @ngm. – vbullinger

+0

Ora non è così interessante: oltre 1.000 visualizzazioni e un punteggio pari a zero per la domanda ... – vbullinger

risposta

54

Per impostazione predefinita, i file con nomi che terminano in ".min.css" saranno inclusi solo in versioni build.

La configurazione fascio consigliata è quella di includere solo css non minified e .js, quindi la versione .min verrà selezionata automaticamente (se esiste) in build di rilascio, cioè <compilation debug="false"> nella vostra web.config.

È possibile controllare questo comportamento deselezionando e quindi aggiungendo ignorare norme alla BundleCollection.IgnoreList. Un esempio BundleConfig potrebbe essere la seguente:

public static class BundleConfig 
{ 
    public static void RegisterBundles(BundleCollection bundles) 
    { 
     ConfigureIgnoreList(bundles.IgnoreList); 

     // Setup your bundles... 
    } 

    public static void ConfigureIgnoreList(IgnoreList ignoreList) 
    { 
     if (ignoreList == null) throw new ArgumentNullException("ignoreList"); 

     ignoreList.Clear(); // Clear the list, then add the new patterns. 

     ignoreList.Ignore("*.intellisense.js"); 
     ignoreList.Ignore("*-vsdoc.js"); 
     ignoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled); 
     // ignoreList.Ignore("*.min.js", OptimizationMode.WhenDisabled); 
     ignoreList.Ignore("*.min.css", OptimizationMode.WhenDisabled); 
    } 
} 

È possibile anche esplicitamente abilitare/disabilitare l'ottimizzazione impostando BundleTable.EnableOptimizations.

+4

Suona bene. Abbiamo finito qui – vbullinger

Problemi correlati