ASP.NET优化不会将LESS转换为CSS

时间:2012-11-21 13:26:45

标签: .net less asp.net-optimization bundling-and-minification

我很难使用.NET的新优化框架(用于缩小和捆绑)将LESS文件转换为CSS。

我有一个只包含LESS文件的目录。

我使用以下代码将这些代码捆绑在一起并将它们转换为CSS:

var lessBundle = new Bundle("~/st-style-common-2")
    .IncludeDirectory("~/Admin/Resources/styles/", "*.less");
lessBundle.Transforms.Add(new LessTransform());
lessBundle.Transforms.Add(new CssMinify());
bundles.Add(lessBundle);

我还使用了详细here的LessTransform类。

当debug =“false”时,文件将转换为标准CSS并按预期编译为一个。

然而,当debug =“true”时,文件不会被转换,在HTML中留下一堆.less URL,浏览器不理解,IIS似乎没有处理程序。

我意识到我可以构建一些处理这些.less文件的处理程序,但我不相信我应该这样做。即使在调试时,优化框架也不会将LESS转换为CSS吗?

3 个答案:

答案 0 :(得分:4)

我没有找到解决方案本身,但我设法通过使用Web Essentials plug-in来解决这个问题,{{3}}自动将我的LESS文件转换为CSS(以及缩小的CSS版本。)

这允许我使用LESS,保存文件并自动编译样式的CSS版本,然后我只是引用CSS版本而不是LESS版本:

bundles.Add(new StyleBundle("~/styles").Include(
            "~/Admin/Resources/styles/*.css"));

答案 1 :(得分:2)

the tutorial you mentioned中获得LessTransform类的第2步,说你应该安装无点的NuGet包。通过Visual Studio包管理器执行此操作时,会自动在Web.config中注册.less处理程序。重要的是,以下内容也在Web.config中:

<modules runAllManagedModulesForAllRequests="true">

这样一切都会自动生效,即使他们没有安装Web Essentials,您的开发团队也可以使用该项目。我不喜欢依赖某些扩展来处理项目(尽管我喜欢Web Essentials!)

答案 2 :(得分:1)

问题是,当debug = true时,默认情况下不会运行优化,因为您总是希望运行优化的文件较少,因此可以通过在BundleConfig.cs中设置来显式设置:

BundleTable.Bundles.EnableOptimizations = true