KryzhanovskyCssMinifier不能与MsieJsEngine一起使用,但与V8JsEngine一起使用

时间:2014-06-29 23:27:31

标签: asp.net-mvc bundletransformer kryzhanovskycssminifier csso

我正在使用最新的BundleTransformer for ASP.NET。

我有一个非常简单的捆绑文件,其中包含一个LESS文件:

 var cssBundle = new CustomStyleBundle("~/Content/css/bundle").Include(                                              
                                       "~/Content/css/test.less");
 bundles.Add(cssBundle);

LESS文件我尽可能简单地证明它实际上正确地解释为LESS。

.something
{
    ol, ul
    {
        list-style: none;
    }
}

当我尝试使用V8JsEngine时,它按预期工作(显示相关的web.config):

<css defaultMinifier="KryzhanovskyCssMinifier" usePreMinifiedFiles="false">
    <minifiers>
         <add name="KryzhanovskyCssMinifier" type="BundleTransformer.Csso.Minifiers.KryzhanovskyCssMinifier, BundleTransformer.Csso" />
    </minifiers>
</css>

<csso>
  <css disableRestructuring="false" />
  <jsEngine name="V8JsEngine" />
</csso>

这给了我正确的CSS:

.something ol,.something ul{list-style:none}

然而,当我切换到MsieJSEngine

<csso>
  <css disableRestructuring="false" />
  <jsEngine name="MsieJsEngine" />
</csso>

我得到以下奇怪的不正确的CSS - 完全剥离了UL。

.something ol{list-style:none}

我无法理解这是怎么回事。它被正确解释为LESS,但完全从列表中删除了UL。顺便说一下,如果我只使用一个没有.something类的纯css文件,我会得到相同的错误结果。

幸运的是,它似乎与V8JsEngine一起工作得很好,所以我可以继续,但我在这里发布这个希望能帮助别人,因为我很好奇我是否做错了。


档案版本:

BundleTransformer.Core - 1.9.3.0
BundleTransformer.Csso - 1.9.1.0
BundleTransformer.Less - 1.9.1.0
BundleTransformer.MicrosoftAjax - 1.9.1.0

1 个答案:

答案 0 :(得分:1)

对于BundleTransformer.Csso需要ECMAScript 5的完全支持,这只能在MSIE JavaScript Engine for .NETChakraJsRt模式下实现。从文档中引用:

  

Chakra JavaScript引擎的JsRT版本(支持ECMAScript 5)。在计算机上需要Internet Explorer 11或更高版本。

顺便提一下,BundleTransformer.Csso NuGet-package的描述有以下要求:

  

为了正确使用此模块,建议安装以下NuGet包:JavaScriptEngineSwitcher.V8或JavaScriptEngineSwitcher.Msie(仅限ChakraJsRt模式)。