0

编辑:所以根据这一点,这是不可能的,这是一个真正的耻辱。我将需要寻找一个在导入中支持变量的捆绑和压缩库。

我在尝试让BundleTransformer.Less解析以下 LESS 时遇到问题:

// There is a path to Startup framework
@startup-basePath: "../../../";

@import '@{startup-basePath}flat-ui/less/config.less';
@import '@{startup-basePath}flat-ui/less/mixins.less';

它正在产生以下错误:

You are importing a file ending in .less that cannot be found.":"/lib/startup/samples/template/less/@{startup-basePath}flat-ui/less/config.less

这些文件确实存在,但如您所见,它没有解析位置字符串中的变量。VS2013 中的 Web Essentials 编译 LESS 文件并按预期输出 CSS 没有问题。我怀疑问题出在 BundleTransformer 或设置它的方式上。我正在使用以下版本:

Id                             Version              Description/Release Notes                                                                                                                                      
--                             -------              -------------------------                                                                                                                                      
BundleTransformer.Core         1.8.0                Bundle Transformer - a modular extension for System.Web.Optimization (aka Microsoft ASP.NET Web Optimization Framework). Classes `CssTransformer` and `JsTra...
BundleTransformer.Less         1.7.16               BundleTransformer.Less contains translator-adapter LessTranslator. This adapter makes translation of LESS-code to CSS-code. Also contains HTTP-handler LessA...
BundleTransformer.Yui          1.8.0                BundleTransformer.Yui contains 2 minifier-adapters: `YuiCssMinifier` (for minification of CSS-code) and `YuiJsMinifier` (for minification of JS-code). These...

我必须使用这些版本,因为我正在使用 Umbraco 7,它不允许我在不破坏 Umbraco 的情况下更新 Newtonsoft.Json。

我的捆绑配置文件如下所示:

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.UseCdn = true;

    var nullBuilder = new NullBuilder();
    var nullOrderer = new NullOrderer();

    // CSS + LESS
    var libCSS = new CustomStyleBundle("~/libCSS");
    libCSS.Include(
        "~/Content/font-awesome.css",

        // LESS
        "~/lib/startup/samples/template/less/style.less");

    libCSS.Orderer = nullOrderer;

    bundles.Add(libCSS);
}

我认为问题在于未正确注册 Less 变压器,但我已按照安装说明进行操作,请参阅 LESS 版本的文档。任何人都可以看到我缺少的可以帮助解决此问题的东西,或者有人可以推荐一些我可以尝试的东西吗?

所有帮助表示赞赏。

4

3 回答 3

0

BundleTransformer.Less 不支持文件路径中的字符串插值(请参阅《不支持字符串插值吗?》讨论)。

更新:在BundleTransformer.Less 版本 1.9.92现在支持文件路径中的插值。

于 2014-04-29T11:54:25.880 回答
0

我也尝试过这个库,但没有成功:/

编译 LESS 的最佳解决方案是 node.js 包 LESS ( https://www.npmjs.org/package/less ) 或 Recess ( http://twitter.github.io/recess/ )。

因为您的 LESS 文件在您部署 Web 项目后不会更改,因此您不必在每次应用程序初始化期间生成 css。

您还可以在应用程序构建之前或保存 LESS 文件之后生成 CSS。

如果您有兴趣,我可以帮助您了解更多信息。

于 2014-02-27T13:11:07.130 回答
0

我对这些 BundleTransformer 包的 1.9.40 和 1.9.34 版本的运气更好。我遇到了 1.8 版本有时会失败的问题。我们已经使用 BundleTransformer.Core.1.9.40、BundleTransformer.Less.1.9.40 和 BundleTransformer.Yui.1.9.34 几个星期了,没有出现 1.8 版本的任何错误。

于 2015-02-03T21:08:46.897 回答