2012-10-19 11 views
11

ho 4 file:Style raggruppamento per MVC4 non usare i file minimo

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

essi sono aggiunti per raggruppare in modo seguente:

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

Quando si esegue l'applicazione in di debug tutto è reso correttamente:

<link href="/Content/a.css" rel="stylesheet"/> 
<link href="/Content/b.css" rel="stylesheet"/> 

Tuttavia durante l'esecuzione in stampa ce l'ho reso in questo modo:

<link href="/Content/acss?v=mUdXE7_fXKjICzE_XteIB1Igy6TekX1QFh-BtY6fFUw1" rel="stylesheet"/> 

E dentro sto fondatore:

/* Minificazione non riuscita. Restituzione di contenuti non miniati. (24.708): errore di runtime CSS1030: identificatore previsto, trovato '.'

Così ho due domande:

  1. Perché non sta funzionando secondo i documenti on-line? Tutte le informazioni dicono che sceglie il file min se disponibile per la versione di rilascio?
  2. Come farlo funzionare secondo la documentazione?
+0

"Perché non funziona secondo i documenti online?" "Come farlo funzionare secondo la documentazione?" - Quali documenti stai guardando? – Pluc

+0

_CSS1030: identificatore previsto, trovato '.'_ Sembra che tu abbia un errore nel tuo css, che può fallire il minification. – ZippyV

+0

@ZippyV Minification non funziona con alcuni tag specifici del browser. E la domanda non è correlata all'errore, ma al perché il bundling non sta usando il file min, che è già nella cartella. – Marcin

risposta

35

Avevo esattamente lo stesso problema riscontrato, la mia soluzione conteneva file css/js accompagnati dai loro file .min che avevo usato Web Essentials per ridurre al minimo.

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

Sulla base http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification dove si afferma:

per ASP.NET MVC 4, ciò significa con una configurazione di debug, il file jquery-1.7.1.js verrà aggiunto al pacchetto. In una versione , verrà aggiunto jquery-1.7.1.min.js. Il quadro raggruppamento segue varie convenzioni comuni quali:

Selezione “.min” di file 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à ridotti al minimo e li impacchettasse. 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 menzioni:

Si può saltare minification semplicemente creando fasci senza trasformare, cioè non creare ScriptBundles, solo Bundles normali.

Questa è la risposta al mio problema. Impostando sia il mio ScriptBundle e StyleBundle per digitare solo Bundle, ora ottenere il raggruppamento corretto senza la riduzione al minimo.

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

+4

Lei signore, sono uno studioso e un gentiluomo. Buona pesca. – Khepri

+1

cambiando ScriptBundle e StyleBundle nel pacchetto regolare lo ha fatto per me. Ma perché microsoft non usa di default Bundle in un progetto mvc predefinito quando carica sia jquery- {versione} .js che jquery- {versione} -min.js? –

+0

Grazie! Sembra che il problema principale sia la minimizzazione dei file .min. –

0

Hai guardato un Bundle Transformer, è 1.6.5 version introdotto una proprietà chiamata usePreMinifiedFiles che abilita/disabilita l'utilizzo di file di pre-minified.

Hai impostato BundleTable.EnableOptimizations = true;

Dal documentation

Nota: A meno che EnableOptimizations è vero o l'attributo debug nel compilation elemento nel file web.config è impostato su false, i file saranno non essere raggruppato o minimizzato. Inoltre, la versione .min dei file non verrà utilizzata, saranno selezionate le versioni complete di debug. EnableOptimizations sovrascrive l'attributo di debug nella compilazione elemento nel file web.config

+1

No non ancora, prima di iniziare a utilizzare strumenti di terze parti, vorrei ottenere una risposta sul perché Bundling non funziona secondo la documentazione. – Marcin

+0

potresti provare con css con nome più lungo, ad esempio apple.css e banana.css. Mi chiedo solo se c'è uno scontro con una variabile minata a o b. Certo, questa è una supposizione completa e forse ben lontana dal farlo. – dove

+0

questo è solo un esempio. i miei file infatti si chiamano: _myfile.common.css_, _myfile.layout.all.css_, _myfile.common.min.css_, _myfile.layout.all.min.css_ – Marcin

1

tua domanda reale non è responsabile perché è già agisce in qualità di stati di documentazione (che è il motivo per cui ho chiesto che la documentazione che cercavate esso, ma hai scelto di ignorare il mio commento).

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

In base alla documentazione, è possibile utilizzare anche "~/Content/a{version}.css" che utilizza la versione non minificata in modalità di debug e versione ridotta per il rilascio. Tuttavia, non l'ho provato.

+0

Non ho ignorato il tuo commento. Non vedo nessuno da te con la domanda. L'unico che riesco a vedere è relativo ai punti nei nomi dei file. Forse sono cieco ma non riesco a vedere nessuna domanda. E rispondendo ora, [qui] (http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification) dove ho guardato. C'è una seguente dichiarazione: _Il framework di bundling segue diverse convenzioni comuni come: Selezionare il file ".min" per il rilascio quando "FileX.min.js" e "FileX.js" esistono. Selezionare la versione non ".min" per debug._ – Marcin

+0

Scusa, ora sto vedendo. Ho esaminato il thread diverso – Marcin

+0

Si prega di leggere le 5 righe dopo la citazione che hai postato sul link che hai fornito. Questo è anche il luogo in cui ho trovato le mie informazioni per pubblicare questa risposta, ma non stai facendo ciò che è menzionato in quel tutorial. – Pluc

Problemi correlati