0

这是我用来将文件解析.less.css文件的 LessTransform 类:

public class LessTransform : IBundleTransform
{
    public void Process(BundleContext context, BundleResponse response)
    {
        response.Content = dotless.Core.Less.Parse(response.Content);
        response.ContentType = "text/css";
    }
}

我正在尝试bootstrap.css使用我的LessTransform课程解析下载的文件。当方法运行时,最初response.Content有 Bootstrap 的内容。

调用后dotless.Core.Less.Parse()response.Content为空白。解析器静默失败。

为什么?

4

1 回答 1

3

您的 LESS 解析没有任何错误处理,因此所有错误都被默默忽略。如果您正在处理错误,您会看到以下内容:

Expected '}' on line 577 in file '../bootstrap/mixins.less':
[576]: 
[577]:     .spanX (@index) when (@index > 0) {
       --------------------^
[578]:       .span@{index} { .span(@index); }

看起来 Bootstrap 使用了一些 DotLESS 尚不支持的 LESS 语法。您可以尝试使用较旧的 Bootstrap 版本(我之前使用过带有 DotLESS 的 Bootstrap 2.0)。

要实现错误处理,您需要添加一个ILogger实现。像这样的东西:

var config = new DotlessConfiguration
{
    LogLevel = LogLevel.Error,
    // Put your custom logger implementation here
    Logger = typeof(LessCssLogger)
};

var lessEngine = new EngineFactory(config).GetEngine();
var outputCss = lessEngine.TransformToCss(response.Content, null);
Response.Content = outputCss;

在哪里LessCssLogger实现ILogger。DotLESS 附带一个AspResponseLogger您可能可以使用的。

于 2013-05-13T00:19:43.017 回答