【发布时间】:2014-10-16 04:58:58
【问题描述】:
短篇小说
带有Web Essentials 的Visual Studio 2013.3,带有dotLess 1.4.1 的ASP .NET MVC 5 项目。尝试在一个简单的 less 文件中使用 @import (less) 语句,它只导入一个简单的 css 文件,导致 NullReferenceException 的提升。 @import 没有 (less) 指令没有按预期解析 - 它只是被复制到未解析的结果文件中。 有没有办法解决这个问题?还是只是dotLess的一个bug?
长篇大论(带有重现步骤)
- 在 Visual Studio 2013.3 中创建一个新的 ASP .NET MVC 5 项目
- 通过 NuGet 包管理器安装最新版本的 dotless
- 在
~/Content/文件夹中创建一个简单的Site.less文件,它只导入默认的Site.css文件:
_
@import (less) "Site.css";
- 根据Bundling and Minification article of ASP .NET MVC 4 tutorial创建
LessTransform类如下:
_
using System.Web.Optimization;
public class LessTransform : IBundleTransform
{
public void Process(BundleContext context, BundleResponse response)
{
response.Content = dotless.Core.Less.Parse(response.Content);
response.ContentType = "text/css";
}
}
- 在
BundleConfig.cs文件中BundleConfig类的RegisterBundles方法中添加以下行:
_
var lessBundle = new Bundle("~/Content/less").Include("~/Content/Site.less");
lessBundle.Transforms.Add(new LessTransform());
bundles.Add(lessBundle);
- 在
_Layout.cshtml文件中删除(或只是注释掉)行:
_
@Styles.Render("~/Content/css")
并添加以下行:
@Styles.Render("~/Content/less")
- 运行项目
结果:NullReferenceException被抛出LessTransform类就行了:
response.Content = Less.Parse(response.Content);
有没有办法解决这个问题?还是只是dotLess的一个bug?
知识库
- 变化中
_
@import (less) "Site.css";
到
@import (less) "./Site.css";
没有帮助。
始终复制到
Site.css的输出目录没有帮助。将
@import (less) "Site.css"更改为@import "Site.css"并没有帮助,因为 dotLess 不会像我们预期的那样解析结果行。它只是复制行而不进行任何处理。Web Essentials 2013 for Update 3 正确表示less 文件的编译版本。尽管如此,问题仍然存在。
【问题讨论】:
标签: c# .net asp.net-mvc less dotless