1

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

我有一个非常简单的捆绑文件,其中包含一个 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。顺便说一句,如果我把它做成一个没有类的纯 css 文件,.something我会得到同样的错误结果。

幸运的是,它似乎与 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
4

1 回答 1

1

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

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

顺便说一句,在BundleTransformer.Csso NuGet 包的描述中有以下要求:

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

于 2014-09-26T08:42:43.853 回答