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



我很难使用 .NET的新优化框架(用于缩小和捆绑)。

我有一个目录,其中只包含更少的文件。

我使用以下代码将它们捆绑在一起并将它们转换为 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 吗?

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

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

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

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

<modules runAllManagedModulesForAllRequests="true">

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

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

BundleTable.Bundles.EnableOptimizations = true

最新更新