2012-11-15 13 views
9

Spero di non creare un argomento duplicato, ma ho cercato per due giorni e non riesco a trovare una soluzione a questo.Dotless - Impossibile fare riferimento a meno variabili in un file separato con MVC Bundling

Stiamo iniziando un nuovo progetto in MVC4 e abbiamo la versione di meno bootstrap caricato. Il problema che sto incontrando è quando provo a fare riferimento ad alcune classi o variabili nel bootstrap.less, nel mio global.less o in qualsiasi altra cosa al di fuori del file corrente. Posso creare una variabile nella parte superiore del file corrente e usarla bene, ma se voglio usare qualcosa da un file separato, devo farlo @import. Questo andrebbe bene se la mia intera app fosse meno in un file, ma dovrei @importare più di 4 file in ogni pagina/sezione meno file che creo.

ho aggiunto il bundling aggiunta MVC4 da https://gist.github.com/2002958

La questione, come sto vedendo, è che ogni file viene valutata e convertita in css in modo indipendente. Ho cercato di semplificare il processo e costruire una massiccia meno stringa da tutti i file nella meno fascio e poi convertirli (Less.Parse(lessString)), ma sto ottenendo l'errore:

"You are importing a file ending in .less that cannot be found"

Quindi, ecco la mia ultima domanda: C'è un modo per analizzare semplicemente una stringa minore senza che ci sia un riferimento a un file fisico? Questo risolverebbe il mio problema.

Se ciò non è possibile per qualche strana ragione, esiste già un componente o un processo che non conosco, raggruppa i file prima di ridimensionarli?

Qualsiasi luce su questo argomento sarebbe apprezzata mentre sto girando in tondo cercando di farlo funzionare.

La domanda è stata anche postato nel gruppo errati privi di punti:
https://groups.google.com/forum/?fromgroups#!topic/dotless/j-8OP1dNjUY

+0

hai trovato una soluzione a questo? –

+0

Purtroppo, non l'ho mai fatto. Ho dedicato più tempo ad esso di quanto pensassi saggio, e sono andato avanti. Non avendo una soluzione al problema, non ho usato meno nei miei ultimi progetti. Semplicemente non è sembrata una valida opzione per i miei bisogni. – Difinity

risposta

3

questo sollution sta lavorando per me:
ho due pacchetti Nuget:
dotless
dotless adapter for system.web.optimization

in web.config ho questo linee

<configuration> 
    <configSections> 
     <section name="dotless" type="dotless.Core.configuration.DotlessConfigurationSectionHandler, dotless.Core" /> 
    </configSections> 
    <system.web> 
     <httpHandlers> 
      <add path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler, dotless.Core" /> 
     </httpHandlers> 
    </system.web> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 
     <handlers> 
      <add name="dotless" path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler,dotless.Core" resourceType="File" preCondition="" /> 
     </handlers> 
    </system.webServer> 
    <dotless minifyCss="true" cache="true" web="false" disableParameters="true" /> 
</configuration> 

nota che si dovrebbero definire paramless dotless per le tue esigenze.

in BundleConfig.cs

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.Add(new LessBundle("~/bundles/styles/").Include(
     "~/Content/site.less" 
    )); 
    BundleTable.EnableOptimizations = True; //false if you want to debug css 
} 

e finalmente Site.less

/*i have to redefine some bootstrap mixin and variables, so importing bootstrap and extending happings there*/ 
@import "bootstrap-extends.less"; 

/* all other needed less should be included here too 
    for example: 
    @import "admin.less"; 
    @import "controls.less"; 
    etc 
*/ 

body{ 

} 

site.less e bootstrap-extends.less sono cartella Contenuto all'interno.
bootstrap-extends detiene tutte le direttive @import necessari che sono usualy elencato in ~/Content/bootstrap/bootstrap.less

Spero che questo aiuta

Problemi correlati