Bundle di stile per MVC4 che non utilizza file min

Ho 4 file:

  • a.css
  • a.min.css
  • b.css
  • b.min.css

vengono aggiunti al pacchetto nel seguente modo:

bundles.Add(new StyleBundle("~/Content/acss").Include("~/Content/a.css", "~/Content/b.css")); 

Quando si esegue l’applicazione in debug, tutto viene reso correttamente:

    

Tuttavia, quando è in esecuzione, l’ho reso nel seguente modo:

   

E dentro sto fondando:

/ * Minificazione non riuscita. Restituzione di contenuti non miniati. (24.708): errore di run-time CSS1030: identificatore previsto, trovato “.”

Quindi ho due domande:

  1. Perché non funziona secondo i documenti online? Tutte le informazioni dicono che sceglie il file min se disponibile per la versione di rilascio?
  2. Come farlo funzionare secondo la documentazione?

Ho avuto lo stesso identico problema che avevi, la mia soluzione conteneva file css / js accompagnati dai loro file .min che avevo usato Web Essentials per minimizzare.

Se avessi usato i bundle in modalità debug, tutto funzionerebbe correttamente e tutti i singoli file non minimizzati sarebbero stati caricati nella mia app. Tuttavia, se imposto BundleTable.EnableOptimizations = true; quindi avrei ricevuto degli errori perché aveva problemi a ridurre i miei file.

Basato su http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification dove afferma:

Per ASP.NET MVC 4, questo significa che con una configurazione di debug, il file jquery-1.7.1.js verrà aggiunto al pacchetto. In una configurazione di rilascio, verrà aggiunto jquery-1.7.1.min.js. La struttura di raggruppamento segue diverse convenzioni comuni come:

Selezione del file “.min” per il rilascio quando “FileX.min.js” e “FileX.js” esistono. Selezione della versione non “.min” per il debug.

Mi aspettavo che caricasse semplicemente i miei file già minimizzati e li raggruppasse semplicemente. Quello che credo è implicito, ma manca nella documentazione, è che ridurrà di nuovo anche i miei file già minimizzati, che non funzionavano e causavano errori nell’output.

Ho trovato http://aspnetoptimization.codeplex.com/workitem/56 che menziona:

Puoi saltare la minifrazione semplicemente creando pacchetti senza trasformazioni, ovvero non creare ScriptBundles, solo pacchetti normali.

Questa risultò essere la risposta al mio problema. Impostando sia il mio ScriptBundle che il StyleBundle solo per digitare Bundle , ora ottengo il bundle corretto senza la minimizzazione.

Nel debug, tutti i miei file css / jss normali vengono caricati indidamente. Quando lo imposto su non-debug, tutto viene raggruppato e sceglie automaticamente tutti i file .min.

La tua domanda non è rispondente perché sta già agendo come stato della documentazione (è per questo che ho chiesto quale documentazione stavi guardando, ma hai scelto di ignorare il mio commento).

Se si desidera mantenere lo stesso comportamento in modalità di rilascio, utilizzare BundleTable.EnableOptimizations = false; nel tuo Global.asax . Questo spegnerà il bundling e il minification attivi solo in modalità di debug . Quindi, per utilizzare i tuoi file css / js minificati, punta semplicemente il percorso dei pacchetti alle versioni minificate.

Secondo la documentazione, si potrebbe anche usare "~/Content/a{version}.css" che userebbe la versione non minified in modalità debug e versione minified per il rilascio. Tuttavia, non l’ho provato.

Hai guardato un Transformsr di Bundle , la sua versione 1.6.5 ha introdotto una proprietà chiamata usePreMinifiedFiles che abilita / disabilita l’uso di file pre-minificati.

Hai impostato BundleTable.EnableOptimizations = true;

Dalla documentazione

Nota: a meno che EnableOptimizations non sia true o l’attributo debug nell’elemento di compilazione nel file Web.config sia impostato su false, i file non verranno raggruppati o minimizzati. Inoltre, la versione .min dei file non verrà utilizzata, saranno selezionate le versioni complete di debug. EnableOptimizations sovrascrive l’attributo debug nell’elemento di compilazione nel file Web.config