【问题标题】:Upgraded dotLess error: IImporter does not contain definition for 'Paths'升级的 dotLess 错误:IImporter 不包含“路径”的定义
【发布时间】:2014-03-27 01:42:16
【问题描述】:

我在一个项目中有以下代码我尝试将 "dotless" NuGet package 从“1.2.2.0”升级到最新版本(目前为“1.4.0.0”):

private void GetStylesheetContent(HttpContext context, string name)
{
    var conf = BundleConfigSectionHandler.GetConfig();
    var elt = conf.Stylesheets.GetBundle(name); 
    if (elt != null) {
        Minifier minifier = null;
        if (_conf.Stylesheets.Minify) {
            minifier = new Minifier();
        }    
        var files = elt.ListFiles();
        var existingFiles = new List<string>();    
        StringBuilder buffer = new StringBuilder();

        foreach (var file in files) {
            var physicalFile = context.Request.MapPath(file);
            if (File.Exists(physicalFile)) {
                existingFiles.Add(physicalFile);                        
                string content;
                var path = VirtualPathUtility.GetDirectory(file);
                if (file.EndsWith(".less", StringComparison.OrdinalIgnoreCase)) 
                {
                    var reader = new dotless.Core.Input.VirtualFileReader();
                    var localpath = VirtualPathUtility.ToAbsolute(file);
                    content = reader.GetFileContents(localpath);
                    var parse = new Parser();
                    parse.Importer = new Importer(reader);

        /*Error>*/ parse.Importer.Paths.Add(VirtualPathUtility.ToAbsolute(path));

                    var eng = new LessEngine(parse);
                    content = eng.TransformToCss(content, localpath);

错误在倒数第三行。它说:

错误 417“dotless.Core.Importers.IImporter”不包含 'Paths' 的定义并且没有扩展方法 'Paths' 接受 'dotless.Core.Importers.IImporter' 类型的第一个参数可以是 找到(您是否缺少 using 指令或程序集引用?)

很遗憾团队没有留下带有[过时]属性和升级建议的旧方法。 有谁知道如何替换“Importer.Paths.Add”方法?

【问题讨论】:

  • 我知道这不是您要寻找的答案,但我们正在远离 dotless,转而只编译较少灰尘的构建(例如,在我们的登台服务器上)。可能在捆绑包上做更多的工作,但是直到/除非 dotless 赶上更少的 js,否则很难证明使用它是合理的。所以这是一个选择。

标签: c# .net asp.net-mvc .net-4.5 dotless


【解决方案1】:

我对 dotless 的内部工作原理不是很熟悉。但是看the source code 的进口商。自版本 1.2.3 起,paths 一直是 protected。再看看这个类,你似乎需要使用dotless.Parser.Tree.Import 的实例来手动添加你的路径。

看起来这与正常的无点路径相去甚远。因此,如果 API 在这些领域有点不稳定,我不会感到惊讶。您可能还想在How to use ASP.Net MVC 4 to Bundle LESS files in Release mode? 之类的问题中查看捆绑是如何工作的,以了解它们如何处理所有无点类。

【讨论】:

  • 我只是为了测试做parse.Importer.Imports.Add(...);来编译项目。但尚未测试(实际上并不清楚如何测试)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多