4

我很难使用 .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);

我还使用了这里详述的 LessTransform 类。

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

但是,当 debug="true" 文件未转换时,会在 HTML 中留下一堆 .less URL,浏览器无法理解这些 URL,并且 IIS 似乎没有处理程序。

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

4

3 回答 3

4

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

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

bundles.Add(new StyleBundle("~/styles").Include(
            "~/Admin/Resources/styles/*.css"));
于 2012-11-23T09:50:10.313 回答
2

您提到的从哪里获得 LessTransform 类的教程中的第 2 步说您应该安装无点 NuGet 包。当您通过 Visual Studio 包管理器执行此操作时,一个 .less 处理程序会自动在您的 Web.config 中注册。以下内容也在 Web.config 中很重要:

<modules runAllManagedModulesForAllRequests="true">

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

于 2012-11-28T21:45:44.963 回答
0

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

BundleTable.Bundles.EnableOptimizations = true
于 2012-12-06T19:39:48.407 回答