1

我们使用捆绑 LESS 代码 n MVC3 应用程序,一切正常。在我们的 RegisterBundles() 中,我们的代码如下:

var bundle = new
Bundle("~/assets/styles/EnhancedLayoutLess")
     .Include("~/assets/styles/enhanced-layout.less");
bundle.Transforms.Add(new CssTransformer());
BundleTable.Bundles.Add(bundle);

然而,在升级到 MVC4 和最新版本的 BundleTransformer:Core (1.6.28)、BundleTransfomer:LESS (1.6.26) 和 Microsoft ASP.NET Web Optimization Framework (1.1.0) 后,当我们尝试检索捆绑包时,我们得到了以下错误:

找不到方法:'System.Collections.Generic.IEnumerable`1 System.Web.Optimization.BundleResponse.get_Files()'。

[MissingMethodException:找不到方法:'System.Collections.Generic.IEnumerable 1 bundleFiles)+198 System.Web.Optimization.Bundle.ProcessRequest(BundleContext 上下文)+269 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +913 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +1651<System.IO.FileInfo> System.Web.Optimization.BundleResponse.get_Files()'.]
BundleTransformer.Core.Transformers.TransformerBase.Process(BundleContext context, BundleResponse response) +0
System.Web.Optimization.Bundle.ApplyTransforms(BundleContext context, String bundleContent, IEnumerable

有什么建议我应该检查什么?或者如何让 LESS 捆绑在 MVC4 下工作?

4

3 回答 3

2

我遇到了同样的问题,我找到了解决方案 :) 这个问题是由 YuiCompressorTransform 类(Yahoo.Yui.Compressor.Web.Optimization)引起的。

处理方法包含以下代码:

// Grab all of the content.
        var rawContent = new StringBuilder();
        foreach (var fileInfo in response.Files)
        {
            using (var reader = fileInfo.OpenText())
            {
                rawContent.Append(reader.ReadToEnd());
            }
        }

但是 fileInfo 没有 OpenText 方法。

我已将其更改为以下代码:

using (var stream = fileInfo.VirtualFile.Open())
            {
                var streamReader = new StreamReader(stream);
                rawContent.Append(streamReader.ReadToEnd());
                streamReader.Close();
            }

一切正常。链接到正确的类:https ://gist.github.com/gr4b4z/8349097

于 2014-01-10T09:38:22.587 回答
0

虽然乍一看这似乎是一个不同的问题,但这篇文章解决了我的问题: ASP.NET MVC4 App 在生产环境中无法编译 Bootstrap.LESS 而在开发环境中工作

两种情况的根本原因是相同的。显然,在 MVC4 捆绑中,使用虚拟路径和用于正确解析的 LESS 导入现在无法找到依赖文件。

于 2013-07-11T21:49:24.020 回答
0

只是BundleTransformer.Core 1.6.28与 Microsoft ASP.NET Web Optimization Framework 1.1.0 不兼容。那时,有必要使用BundleTransformer.Core 1.7.12 Beta 1或等待版本1.7.16的发布。

于 2015-12-09T12:57:57.483 回答