Il parser dotLess intercetta le eccezioni e le restituisce a un Logger. Il frammento dalla fonte di errati privi di punti che esegue questa è LessEngine.TransformToCss
:
public string TransformToCss(string source, string fileName)
{
try
{
Ruleset ruleset = this.Parser.Parse(source, fileName);
Env env = new Env();
env.Compress = this.Compress;
Env env2 = env;
return ruleset.ToCSS(env2);
}
catch (ParserException exception)
{
this.Logger.Error(exception.Message);
}
return "";
}
Less.Parse
ha un sovraccarico che prende un oggetto DotlessConfiguration
, che prevede diverse proprietà che è possibile utilizzare:
public class DotlessConfiguration
{
// Properties
public bool CacheEnabled { get; set; }
public Type LessSource { get; set; }
public Type Logger { get; set; }
public LogLevel LogLevel { get; set; }
public bool MinifyOutput { get; set; }
public int Optimization { get; set; }
public bool Web { get; set; }
}
si noterà che il Logger
proprietà è di tipo Type
. Qualunque sia il tipo fornite deve implementare dotless.Core.Loggers.ILogger
:
public interface ILogger
{
// Methods
void Debug(string message);
void Error(string message);
void Info(string message);
void Log(LogLevel level, string message);
void Warn(string message);
}
Come abbiamo visto nel primo frammento di, il metodo Error
sul logger verrà chiamato quando viene rilevato un errore durante l'analisi.
Ora, l'unico punto importante di tutto questo è il modo in cui un'istanza del tipo che implementa ILogger
viene istanziata. DotLess utilizza internamente un contenitore IoC cotto nella DLL. Seguendo le chiamate al metodo, sembra che alla fine chiamerà Activator.CreateInstance
per creare un'istanza di ILogger.
Spero che questo sia almeno in qualche modo utile.
fonte
2011-01-25 23:32:42
Hai visto SquishIt? http://www.codethinked.com/post/2010/05/26/SquishIt-The-Friendly-ASPNET-JavaScript-and-CSS-Squisher.aspx –
@qstarin: Grazie, ma sto già usando Combres (http: //combres.codeplex.com/) per scopi di produzione e le combres possono fare tutto ciò che fa lo squishit (più un po 'di più). Ma ho ancora bisogno della risposta alla mia domanda di cui sopra per scopi di sviluppo. Il motivo è che non mi piace lavorare con un download combinato di tutti i miei file CSS, preferisco invece file separati. E tutto funziona bene, tranne che per i messaggi di errore ... –
Sono curioso, quali utili funzionalità fornisce a SquishIt le funzionalità di SquishIt? Guardando nella documentazione di Combres sembra che facciano lo stesso compito. Squish, tuttavia, include dotLess nella sua elaborazione. Questo è il motivo per cui l'ho menzionato, perché non avresti bisogno di un'azione separata per eseguire la compilazione dotLess. –