DotLess parser pułapek Wyjątki i wysyła je do Logger. Fragment ze źródła bez kropki, że wykonuje to 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
ma przeciążenie, że trwa DotlessConfiguration
obiekt, który zapewnia wiele właściwości, które można użyć:
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; }
}
Można zauważyć, że Logger
właściwość jest typu Type
. Niezależnie od rodzaju podać musi wdrożyć 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);
}
Jak widzieliśmy w pierwszym fragmencie, metoda Error
na rejestratorze zostanie sprawdzony gdy wystąpi błąd podczas parsowania.
Jedną z lepszych rzeczy jest to, jak dokładnie instancja typu implementującego ILogger
zostaje utworzona. Wewnętrznie, dotLess używa kontenera IoC, który jest wypiekany w bibliotece DLL. Po wywołaniu metody okazuje się, że ostatecznie zadzwoni pod numer Activator.CreateInstance
, aby utworzyć instancję ILogger.
Mam nadzieję, że jest to co najmniej pomocne.
Widziałeś SquishIt? http://www.codethinked.com/post/2010/05/26/SquishIt-The-Friendly-ASPNET-JavaScript-and-CSS-Squisher.aspx –
@qstarin: Dzięki, ale już używam combres (http: //combres.codeplex.com/) do celów produkcyjnych i combres mogą zrobić wszystko, co robi squishit (plus trochę więcej). Nadal potrzebuję odpowiedzi na powyższe pytanie do celów rozwojowych. Powodem jest to, że nie lubię pracować z połączonym plikiem do pobrania wszystkich moich plików CSS, zamiast tego wolę osobne pliki. I wszystko działa dobrze, z wyjątkiem komunikatów o błędach ... –
Jestem ciekawy, jakie użyteczne funkcje zapewnia, że SquishIt nie? Przeglądając dokumentację Combres wygląda na to, że wykonują wiele takich samych zadań. SquishIt jednak obejmuje dotLess do jego przetwarzania. Właśnie dlatego wspomniałem o tym, ponieważ nie potrzebowałbyś osobnej akcji do wykonania kompilacji dotLess. –